2013-12-20 35 views
23

私は、ドロップダウンリストからページ名を選択して、そのページにブラウザを転送するWebページを作成しました。転送を行うコードは、window.open(url、 '_blank');

if (url){ 
    window.open(url, '_blank'); 
} 

です。ここで、「url」は選択されたページです。

executing: window.open(http://www.mywebsite.com/44/threats.html, '_blank') 

して、ブラウザが新しいタブでページを開きますwindow.openラインのようなものを出力する直前に

コンソールログ。

これは、Safariを含むすべてのブラウザでWindows 7で正常に動作します。

iMacでは、Firefoxでは動作しますが、Safariでは動作しません。

誰かがiMac/Safariでこれをしない理由を知っていますか?

答えて

-1

「Tabs」のSafarには、Open pages in tabs instead of windows:のラベルが付いていて、いくつかのオプションがあります。私はあなたがAlwaysに設定されるかもしれないと思っています。要するに、ブラウザに新しいウィンドウを開くことはできません。

+1

これはそれだとは思わない。 Safariはどこにでもサイトをオープンしません。私はその行を実行しなかったようです。 – Steve

+0

ああ。私はちょうどあなたの質問を誤解していたと思う。 –

14

サファリでwindow.open()を使用するには、それを要素のonclickイベント属性に入れる必要があります。例えば

<div class='btn' onclick='window.open("https://www.google.com", "_blank");'>Open google search</div>

-3

正しい構文はオープンでwindow.open(URL,WindowTitle,'_blank')すべての引数は文字列でなければなりません。それらは必須ではなく、ウィンドウをドロップすることもできます。したがって、自分でnewWin.documentを作成する予定がある場合は、ちょうどnewWin=open()も機能します。 しかし、3つの引数をすべて使用しなければならず、3番目の引数は'_blank'に設定して、タブではなく新しい真のウィンドウを開きます。受け入れの回答から撮影

10

2013年12月20日にスティーブによってコメント:

実際に、それを行うには非常に簡単な方法があります:ただのiMac/Safariブラウザで「ブロックポップアップウィンドウ」をオフにクリックして、それは私が望むことをする。

のMac OS XエルキャピタンのSafariを実行している場合、明確にする:

  1. サファリ - >設定
  2. セキュリティ - >チェックを外し 'ブロックポップアップウィンドウ'
+5

しかし、顧客のポップアップウィンドウをブロックすることはできません – xiaoyu2er

54

サファリ非同期呼び出しの中で行われるwindow.open()への呼び出しをブロックしています。

私がこの問題に気付いた解決策は、asnyc呼び出しを行い、約束が解決したときに場所を設定する前にwindow.openを呼び出すことです。

var windowReference = window.open(); 

myService.getUrl().then(function(url) { 
    windowReference.location = url; 
}); 
+3

jquery $のsuccessメソッドでwindow.openを使用しようとしています。ayncは、asyncがtrueに設定されているときに呼び出されます。 Safariはwindow.openを無視します。 async:jquery $ .ajaxの呼び出しをfalseに変更すると、window.openが機能するようになりました。 –

+0

これは正しい方向を指しています。多くの感謝です。 –

+0

これは、問題、問題の原因、および回避策を示します。これが選択された回答でなければなりません。 –

関連する問題