禁止使用JavaScript打开新窗口

10

如何使用html、javascript、jQuery等禁用window.open()函数?
我的意思是阻止所有窗口打开的尝试,使所有现有的window.open()函数“不起作用”
最好的方法是什么?(也适用于iframe情况)


不确定是否可能。不能完全禁用JS吗? - Huey
禁用浏览器功能的网站是一个祸害。如果你在你的网站上通过iframe托管我的网站,并禁用了我的代码中的window.open,我们合作的时间不会太长... - Claies
2个回答

9
//for iframes:
$.each($('iframe'), function() {
    this.contentWindow.open = function (url, windowName, windowFeatures) {
        //iframe window.open caught!
    };
});

//for window:
window.open = function (url, windowName, windowFeatures) {
    //window.open caught!
};

1
你可以在需要使用 open 函数的时候创建一个新的 iframe,并使用该新创建的 iframe 的 open 函数。因此,这并不是真正的保护。 - t.niese

3

你会污染全局命名空间,但你可以简单地覆盖 window.open 方法...

window.open = function (url, windowName, windowFeatures) {
    console.log('not opening a window');
} 

你的意思是说你的代码被隔离在一个iframe中吗? - sfletche
我需要防止window.open()在iframe的情况下打开。 - neoDev
1
然后需要在 iframe 中覆盖 window.open - user663031

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接