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

Posted

技术标签:

【中文标题】javascript window.open 在 safari 和 chrome 中不起作用【英文标题】:javascript window.open not working in safari and chrome 【发布时间】:2017-10-26 03:05:56 【问题描述】:

我有一个 div 元素。 div 是一个图标。 当您单击此图标时,会触发表单提交。 在表单提交上有一些计算,这些计算的结果会打开一个新选项卡。

我使用“window.open(url, '_blank');

但在 safari 和 chrome 中,这个新标签被视为弹出窗口并被阻止。

我尝试创建一个隐藏的 a href 并触发点击,以便在新标签页中打开页面,但它不起作用。

知道如何解决这个问题吗?

编辑 - 找到解决方案

您需要在 $.ajax 成功方法内的单击事件上添加 window.open。这样就可以了。

$('#myButton').click(function () 
    var redirectWindow = window.open('http://google.com', '_blank');
    $.ajax(
        type: 'POST',
        url: '/echo/json/',
        success: function (data) 
            redirectWindow.location;
        
    );
);

http://jsfiddle.net/safeeronline/70kdacL4/1/

【问题讨论】:

如果人们想要阻止弹出窗口,他们会阻止弹出窗口,除了添加用户需要单击以查看结果的可见超链接之外,您无能为力,如 direct导致弹出窗口的用户交互 通常不会被阻止。 试试这个它显示在 safari & chrom <html> <head> <!--Load the AJAX API--> </head> <body> <input type=button onclick="Test()" value="Click me"> <script> function Test() window.open("https://nodejs.org", '_self/_blank'); </script> </body> </html> 添加你的onclick代码...你是直接在那里做window.open吗? 【参考方案1】:

你需要调用 window.open 作为 onclick 事件(用户事件)的直接结果......你不能在异步之前做某事,然后在结果上做 window.open

【讨论】:

您的解决方案效果很好!但是我怎么做才能使窗口仅在插入查询完成后打开?因为它还不能捕获 id,因为表是空的,并且打印报告的查询比执行插入查询更快。

以上是关于javascript window.open 在 safari 和 chrome 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

javascript:window.open 不起作用?

javascript window.open [重复]

JavaScript window.open()一个包含大量脚本的页面 - 脚本显示为文本

javascript中window.open()与window.location.href的区别

JavaScript中的window.location.href和window.open()方法

javascript 打开页面window.location和window.open的区别