我需要在新窗口中打开外部链接。我处理在 View 中单击编辑按钮:

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中,新窗口似乎被阻止了?我的情况下有解决方法吗?

最佳答案

原因是Safari内置的弹出窗口阻止程序。
唯一允许在Safari中打开新窗口的javascript是直接附加到用户事件的javascript。就您而言,您将在以后调用window.open。
解决方法可以是:

  • 在onEditClicked方法中创建没有URL的窗口safariWindow = window.open();
  • 在handleMessages函数中更改该窗口的URLsafariWindow.location.href = newUrl
  • 07-28 02:52
    查看更多