2016-07-19 1 views
0

Haxe/code OpenFL:Comment ouvrir un nouvel onglet dans le navigateur sans bloquer?

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) 

Cependant, la deuxième option générer pop-up qui est bloquée par Chrome.

Comment ouvrir un lien dans un autre onglet sans être bloqué?

Avec Javascript ce travail:

<!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: J'utilise Stencyl et HTML/JavaScript.

Répondre

0

Je crois que si le popup est ouvert à partir d'un événement déclenché par l'utilisateur (comme le pointeur vers le bas, cliquez sur) aucun popupblocker ne devrait empêcher l'ouverture.

note: Personnellement, je trouve ennuyeux qu'un développeur décide comment une fenêtre doit être ouverte, pourquoi ne pas laisser l'utilisateur décider eux-mêmes?

+0

Merci pour la réponse. Oui. Est-ce que cela existe un moyen d'injecter un lien ou div sur la page comme dans Angular 2? – Gurigraphics

+0

Je ne comprends pas ce que vous demandez. Window.open doit être appelé à partir d'un événement déclenché par l'utilisateur. –

0

Bien que je ne trouve pas une meilleure solution que je vais utiliser:

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

Notez qu'à chaque fois que vous appelez 'createLink', vous ajoutez un autre écouteur. Cela peut conduire à des résultats inattendus. –

+0

Vérité. Je vous remercie. – Gurigraphics