window.open(url, '_blank'); が iMac/Safari で動作しない 質問する

window.open(url, '_blank'); が iMac/Safari で動作しない 質問する

ドロップダウンリストからページ名を選択するとブラウザがそのページに移動するWebページを作成しました。この転送を行うコードは次のとおりです。

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

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

window.open 行の直前のコンソール ログには次のような内容が出力されます。

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

するとブラウザは新しいタブでページを開きます。

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

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

iMac/Safari がこれを行わない理由を知っている人はいますか?

ベストアンサー1

Safari は、非同期呼び出し内で行われる window.open() への呼び出しをブロックします。

この問題に対して私が見つけた解決策は、asnyc 呼び出しを行う前に window.open を呼び出し、promise が解決されるときに場所を設定することです。

var windowReference = window.open();

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

おすすめ記事