我已经构建了一个网页,让您从下拉列表中选择一个页面名称,然后将浏览器传输到该页面.执行传输的代码是
if (url){ window.open(url, '_blank'); }
其中"url"是选中的页面.
window.open行之前的控制台日志打印如下:
executing: window.open(http://www.mywebsite.com/44/threats.html, '_blank')
然后浏览器在新选项卡中打开页面.
这适用于所有浏览器的Windows 7,包括Safari.
在iMac上,它适用于Firefox但不适用于Safari.
有谁知道为什么iMac/Safari不会这样做?
取自史蒂夫于2013年12月20日接受的答案评论:
实际上,有一种非常简单的方法:只需在iMac/Safari浏览器中单击"阻止弹出窗口",它就可以实现我的目的.
为了澄清,在Mac OS X El Capitan上运行Safari时:
Safari - >偏好设置
安全性 - >取消选中"阻止弹出窗口"
要在safari中使用window.open(),必须将其放在元素的onclick事件属性中.
例如:
<button class='btn' onclick='window.open("https://www.google.com", "_blank");'>Open Google search</button>
Safari阻止对在异步调用中进行的window.open()的任何调用.
我发现这个问题的解决方案是在进行asnyc调用之前调用window.open并在promise解析时设置位置.
var windowReference = window.open(); myService.getUrl().then(function(url) { windowReference.location = url; });