项目中有一个需求,要打开新窗口预览,我用了window.open方法,被浏览器拦截,
同事在网上找到了一个
可是只有chrome可以,其它的还不兼容,
然后又想到说在页面中加了一个a标签,然后需要开新窗口时,用jquery选择到,触发点击事件,新窗口还是被拦截了。
最后我想到博客了,看了一下新浪的,代码解压后大概如下;
$E("articlePreviewBtn").onclick = articlePreviewHandler;
function articlePreviewHandler(e) {
v7sendLog("16_01_26");
if ($E("article_tag_input").value == _CFG.dftTagValue)
$E("article_tag_input").value = "";
var html = setSourceValue();
var isEmpty = _EditorCase.isEmptyContent();
if (isEmpty) {
winDialog.alert("博文内容不能为空", {
icon: "01"
});
return
}
if (window.articleAssociate) {
window.articleAssociate.saveSeleteData()
}
$E("editorForm").target = "_blank";
$E("editorForm").action = _CFG.articlePreviewURL;
$E("editorForm").submit();
return false
}
看是做了个表单提交,然后我写仿着写了一个,用jquery取到form,给action和target,还是被拦截了。
现在好头疼,像之前的a标签,本地是ok的,我们放到测试环境beta上,就会被拦截。哪位高人能指点一下小菜我。谢谢了。真心的。
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
楼主的文章看的不是很清晰。
按经验来说,在异步进程中不能打开新窗口,这个避免不了的。属于浏览器的安全策略。
因为新开窗口必须是用户行为触发才行,在异步的进程中认为不是用户行为。
补充:(忘了写解决方法了)
在用户点击的时候新开一个窗口,并拿到引用iframe,异步请求后得到一个url,设置 iframe.src=url。试试看?