2016-11-01 31 views
3

新しいウィンドウで外部リンクを開く必要があります。 。私は、ビューの[編集]ボタンをクリックして処理します。Safari window.open()が機能しません

module.exports = utils.Backbone.View.extend({ 
    events: { 
     "click #edit": "onEditClicked" 
    }, 

    "onEditClicked":() => PubSub.publish("EDITOR_REQUESTED"); 
}); 

ユーザーがログインしている場合は、私がチェック はい場合 - 私は通知「OPEN_EDITOR」を送信し、新しいウィンドウに外部リンクを開くことを期待しています。

TextEditorController.prototype.handleMessages = function() { 

    PubSub.subscribe("OPEN_EDITOR",() => { 
     var editor = window.open(this.$service.getEditorURL()); 
    }); 
}); 

ただし、Safariの新しいウィンドウがブロックされているようですか?私の場合、回避策はありますか?

答えて

3

Safariに組み込まれているポップアップブロッカーです。

Safariで新しいウィンドウを開くことができる唯一のjavascriptは、ユーザーのイベントに直接接続されたjavascriptです。あなたの場合は、後でwindow.openを呼び出しています。

ここで回避策が使用できます

  • がhandleMessagesで、ウィンドウのURLが機能していることonEditClicked方法でURLなし

    safariWindow = window.open();

  • 変更をウィンドウを作成するために

    safariWindow.location.href = newUrl

+0

人のためにポップアップを使用するシステムを構築しました。それは他の人にとっては効果的ですが、サファリユーザーにはポップアップが機能しないという問題があります。この回答を見つけたら、サファリで働くためにはユーザーの「イベント」でなければならないことを理解しています。今では、Safariブラウザで動作するようにコードを調整できるので、ポップアップはそれらのユーザーに対して適切に動作します。しかし、人、この答えを見つけ出すまで、これを理解しようとしていたのは何なのか! :) どうもありがとうございます! – MrTechie

関連する問題