使用窗口原型覆盖所有窗口的window.print()?

时间:2015-08-24 12:01:28

标签: javascript prototype

在玩Javascript时,我尝试修改对象原型。

对于String.toString(),这有效:

var testString = "Test";
testString.toString(); // returns "Test"
String.prototype.toString=function(){return "modified :-)";}
testString.toString(); // now returns "modified :-)"

然而,这不起作用:

Window.prototype.print=function(){
    console.log("disabled");
}
window.print(); // still opens the print dialog

为什么这不起作用? window.print()有点特别吗?或者Window是特殊的吗?

注意:

这似乎只发生在Firefox中(在V40上测试)。在Chrome和Internet Explorer中,window.print()已按预期禁用。

这是Firefox的错误还是设计?

1 个答案:

答案 0 :(得分:1)

我找不到任何官方文档,但似乎window.print()方法在FF内受到保护。

但是,如果您很高兴不使用prototype,则以下版本在Chrome和FF中运行良好(但未在IE中测试):

window.print = function()
{
    console.log('disabled');
}

window.print();

jsFiddle Demo