2016-07-19 9 views
0

Haxe/OpenFL Code:Wie öffne ich einen neuen Tab im Browser ohne zu blockieren?

import openfl.net.URLRequest; 
import openfl.Lib; 

Lib.getURL (new URLRequest (url), "_self"); 
// Opens the linked document in the same window or tab as it was clicked 

Lib.getURL (new URLRequest (url), "_blank"); 
// Opens the linked document in a new window or tab. (this is default) 

erzeugt jedoch die zweite Option Pop-up, die von Chrome blockiert wird.

Wie öffnet man einen Link in einem anderen Tab ohne blockiert zu werden?

Mit Javascript dieser Arbeit:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
<meta charset="utf-8"> 
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 

<title>OpenNewTab</title> 

<meta id="viewport" name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /> 
<meta name="apple-mobile-web-app-capable" content="yes"> 

</head> 
<body> 

<center> 
    <canvas id="myCanvas" width="200" height="200" style="border-style: solid; border-width: 1px"> </canvas> 
</center> 

<script> 

    var canvas; 
    var linkURL = "http://www.google.com";   

    createLink(); 

    function createLink() { 

     canvas = document.getElementById("myCanvas");   
     canvas.addEventListener("click", Link_click, false); 

    } 

    function Link_click(e) { 

     window.open(linkURL,'_blank'); 

    }  
</script> 

</body> 
</html> 

P. S: Ich benutze Stencyl und HTML/JavaScript.

Antwort

0

Ich glaube, wenn das Popup von einem Benutzer ausgelöst wird ausgelöst wird (wie Zeiger nach unten, klicken) kein Popupblocker sollte verhindern, es zu öffnen.

Hinweis: Persönlich finde ich es ärgerlich, dass ein Entwickler entscheidet, wie ein Fenster geöffnet werden soll, warum nicht den Benutzer selbst entscheiden lassen?

+0

Danke für Ihre Antwort. Ja. Gibt es eine Möglichkeit, wie in Angular 2 eine Verknüpfung oder ein Div auf der Seite einzufügen? – Gurigraphics

+0

Ich verstehe nicht, was Sie fragen. Das window.open sollte von einem benutzergetriggerten Ereignis aufgerufen werden. –

0

Während ich keine bessere Lösung finden werde ich diese verwenden:

import openfl.net.URLRequest; 
import openfl.Lib; 

class Web 
{ 

public static function open(s:String, code:Int) 
{ 
    var type:String = "_self"; 
    var s:String = s; 
    var code:Int = code; 

    if(code==1){ 
     type = "_self"; 
    }else if(code==2){ 
     type = "_blank"; 
    } 

#if js  
     untyped __js__(' 

       var canvas; 
       var linkURL = s; 
       var lock = 0; 

       if(lock==0){ 
        lock =1; 
        createLink(); 
       } 

       function createLink() { 

        canvas = document.getElementById("openfl-content");   
        canvas.addEventListener("click", Link_click, false); 

       } 

       function Link_click(e) { 

        window.open(linkURL,type); 

       }  

     ');    

#else 
    Lib.getURL (new URLRequest (s), type); 
#end 
} 

} 
+0

Beachten Sie, dass Sie jedes Mal, wenn Sie 'createLink' aufrufen, einen anderen Listener hinzufügen. Dies kann zu unerwarteten Ergebnissen führen. –

+0

Wahrheit. Vielen Dank. – Gurigraphics

Verwandte Themen