Safari浏览器中的JS window.open方法

Posted

技术标签:

【中文标题】Safari浏览器中的JS window.open方法【英文标题】:JS window.open method in Safari browser 【发布时间】:2018-01-10 08:14:17 【问题描述】:

我在 Safari 浏览器中遇到了 JS window.open 方法的问题:

标准的 window.open() javascript 方法不能用于打开一个 来自全局 html 文件或扩展栏的新选项卡和窗口。 https://developer.apple.com/library/archive/documentation/Tools/Conceptual/SafariExtensionGuide/WorkingwithWindowsandTabs/WorkingwithWindowsandTabs.html

所以,我正在尝试使用此代码:

safari.self.browserWindow.openTab(myLink);

但我得到一个错误:

index.html:199 Uncaught ReferenceError: safari is not defined

(在 google chrome 开发者工具 iPhone 仿真中,它也不适用于真正的 iPhone)

编辑,这里有更多上下文:

var link = 'http://www.example.com/';
something.addEventListener("touchend", function (e) 
    e.preventDefault();
    e.stopPropagation();
    if(navigator.userAgent) 
        safari.self.browserWindow.openTab(link);
    
);

为什么safari.self.browserWindow.openTab(myLink); 在 Safari 中不起作用?

【问题讨论】:

问题是什么? 问题是:为什么是“safari.self.browserWindow.openTab(myLink);”在 Safari 中不起作用,还是我做错了什么? 【参考方案1】:

这样使用: safari.self.tab.dispatchMessage('openurlNewTab', 'http://www.example.com/');

//消息名称'openurlNewTab'是任意的//

【讨论】:

不起作用:var link = 'example.com'; this.addEventListener("touchend", function (e) e.preventDefault(); e.stopPropagation(); if(navigator.userAgent) safari.self.tab.dispatchMessage('openurlNewTab', link); ) ;

以上是关于Safari浏览器中的JS window.open方法的主要内容,如果未能解决你的问题,请参考以下文章

苹果safari浏览器window.open问题

JS window.open()打开新窗口属性详解

safari的window.open无法执行

JS window.open()拦截问题解决方案

window.open() 某些情况会被浏览器阻止弹出窗口及解决办法

javascript window.open 在 safari 和 chrome 中不起作用