ドロップダウンリストからページ名を選択するとブラウザがそのページに移動する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;
});