2016-07-19 2 views
0

Haxe/OpenFL код:Как открыть новую вкладку в браузере без блокировки?

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) 

Однако второй вариант генерации всплывающих окон, заблокированный Chrome.

Как открыть ссылку на другой вкладке без блокировки?

С Javascript этой работы:

<!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: Я использую Stencyl и HTML/JavaScript.

ответ

0

Я считаю, что если всплывающее окно открывается из инициированного пользователем события (например, указатель вниз, щелкните), popupblocker не должен открывать его.

примечание: Лично я нахожу это раздражающим, что разработчик решает, как открыть окно, почему бы не позволить пользователю решить, что они сами?

+0

Спасибо за ответ. Да. Существует ли какой-либо способ вставить ссылку или div на страницу, как в Angular 2? – Gurigraphics

+0

Я не понимаю, что вы просите. Window.open следует вызывать из инициированного пользователем события. –

0

Хотя я не считаю, лучшее решение, я буду использовать это:

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

Обратите внимание, что каждый раз, когда вы вызываете 'createLink', вы добавляете еще один прослушиватель. Это может привести к неожиданным результатам. –

+0

Истина. Спасибо. – Gurigraphics

Смежные вопросы