Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 打开(url,“U空白”);不使用iMac/Safari_Javascript_Macos_Safari - Fatal编程技术网

Javascript 打开(url,“U空白”);不使用iMac/Safari

Javascript 打开(url,“U空白”);不使用iMac/Safari,javascript,macos,safari,Javascript,Macos,Safari,我构建了一个网页,让您从下拉列表中选择一个页面名称,然后将浏览器转移到该页面。进行传输的代码是 if (url){ window.open(url, '_blank'); } 其中url是所选页面 window.open行前面的控制台日志打印如下内容: executing: window.open(http://www.mywebsite.com/44/threats.html, '_blank') 然后浏览器在新选项卡中打开页面 这在Windows7上适用于所有浏览器,包

我构建了一个网页,让您从下拉列表中选择一个页面名称,然后将浏览器转移到该页面。进行传输的代码是

if (url){
    window.open(url, '_blank');
} 
其中url是所选页面

window.open行前面的控制台日志打印如下内容:

    executing: window.open(http://www.mywebsite.com/44/threats.html, '_blank')
然后浏览器在新选项卡中打开页面

这在Windows7上适用于所有浏览器,包括Safari

在iMac上,它适用于Firefox,但不适用于Safari


有人知道iMac/Safari为什么不这样做吗?

Safari中的选项卡下有一个设置,它在选项卡中标记打开的页面,而不是在窗口中:带有一个带有一些选项的下拉列表。我在想你的可能永远都是。底线是您不能依赖浏览器打开新窗口。

要在safari中使用window.open,您必须将其放入元素的onclick事件属性中

例如: 打开谷歌搜索

正确的语法是window.openURL、WindowTitle、“u blank”打开的所有参数都必须是字符串。它们不是强制性的,可以删除窗口。因此,如果您计划自己填充newWin.document,那么也可以使用newWin=open。
但您必须使用所有三个参数,第三个参数设置为“空白”以打开新的true窗口,而不是选项卡。

摘自Steve在2013年12月20日发表的接受答案评论:

实际上,有一种非常简单的方法:只需在iMac/Safari浏览器中单击关闭块弹出窗口,它就可以完成我想要的操作

为了澄清,在Mac OS X El Capitan上运行Safari时:

狩猎->偏好 安全->取消选中“阻止弹出窗口”
Safari正在阻止在异步调用中对window.open的任何调用

我发现这个问题的解决方案是在进行asnyc调用之前调用window.open,并在承诺解决时设置位置

var windowReference = window.open();

myService.getUrl().then(function(url) {
     windowReference.location = url;
});
window.location.assignurl这解决了ios设备中window.openurl的问题

您不能依赖window.open,因为浏览器可能有不同的策略。我有同样的问题,我用下面的代码代替

let a = document.createElement("a");
document.body.appendChild(a);
a.style = "display: none";
a.href = <your_url>;
a.download = <your_fileName>;
a.click();
document.body.removeChild(a);

在新选项卡中打开链接,使用JavaScript编程:safari、mobile safari和其他浏览器:

const link = 'https://google.com';

const a = document.createElement("a");
a.setAttribute('href', link);
a.setAttribute('target', '_blank');
a.click();


我不认为是这样。Safari不会在任何地方打开站点。这就像我没有执行这一行一样。我尝试在async设置为true时,在成功方法中使用window.open进行jquery$.ajax调用。Safari将忽略window.open。将jquery$.ajax调用更改为async:false allowed window.open to work。这将确定问题、问题原因和解决方法。这应该是选定的答案。而不是window.open,而是window.openabout:blank,_blank为我工作如何使用myService从何而来?@Silve2611 myService是一些异步功能,用于获取要重定向的url。但您不能阻止客户的弹出窗口windows@madd我认为关键是你需要回到你的设计师那里,找出如何解决这个问题,而不必通过JS打开一个新窗口或者使用传统的href。这个答案之所以出现在这里,是为了提醒人们浏览器使得打开弹出窗口变得更加困难。OP的结构更加复杂,因此这个答案可能不是他的解决方案。但对于正常的构造,这确实起到了作用。至少在iOS 11.3上,Safari具有默认设置。如果将window.open放入函数中并使用onclick调用该函数,Safari将不会打开新选项卡。该函数必须位于要单击的元素内。对答案的一个小更正:打开谷歌搜索。@FrankConijn感谢您的澄清和更正。我已经在我的帖子中进行了编辑,以反映您的更正。请允许我补充:永远不要使用。看起来很清楚。这会导致url在当前选项卡中打开,而不是在问题中指定的新选项卡中打开。是的。在我坐立不安了一段时间后,这对我起了作用。我试图用iPhone捕捉onScroll,但它不起作用,尽管它在Safari上一般都起作用。谢谢你,伙计。@JonSchneider它导致在当前选项卡中打开,因为它被分配给了窗口。除此之外,在senario中分配url更有效,因为您的url是字符串类型,这对我来说很有效。我不需要弹出窗口。只需要打开url。非常感谢你…我想添加一条评论,当你想从某个url下载一些图片或文档时,这也可以使用。这也不包括_blanknewtab@Dallas我想你可以在这个过程中添加属性target,让它按预期的方式运行。添加target属性并将其设置为_blank会再次打破这一点,safari将阻止它作为一个弹出窗口与目标属性这是伟大的作品!这应该是一个公认的答案。谢谢。不正确,请先阅读文档: