我有一个链接,点击后,浏览器将打开一个新窗口。这是该链接上的click事件的代码:
var clickView = function(){
window.open('/client/item/show/' + itemID);
return false;
};
我还有另一个函数,从ajax调用中读取url并在新窗口中打开它。
if (json.data && json.data.URL)
{
if (me.urlTarget==='_self'){
//use the self window to open the URL
window.location.href =json.data.URL;
} else{
//use new window to open the url.
window.open(json.data.URL);
}
}
对于第一个功能(clickView),浏览器(IE7 / 8和Firefox)将打开一个新选项卡,而不会向用户发出任何警告。对于第二个函数(从json.data.URL读取url),IE和Firefox都会显示警告消息并阻止新窗口,直到用户同意警告。在这两个函数中,开放URL都是相同的。
我想知道为什么会有差异,是否有可能使它们表现一致?
答案 0 :(得分:1)
答案似乎在这里: open new window without the browser giving warning that is a popup
总结:在看似随机的时间调用window.open()会导致浏览器启动警告/提示。作为链接点击的结果调用window.open()可以正常工作。
答案 1 :(得分:0)
第二个实例可能会生成警告,因为它是绝对的URL,而不是相对的URL?
(无论哪种方式,打开新的浏览器窗口都是魔鬼的工作)。