在JavaScript中无法覆盖文档对象



我在为我的JavaScript重写document对象时遇到了一点麻烦。

function myFunction(document) {
    [code]
}

工作好。但

function myFunction(newDocument) {
    document=newDocument
    [code]
}

没有。到目前为止,我用前一种方法很好地管理了函数,但我宁愿只重写一次文档对象并忘记它。如果有人能告诉我全局覆盖文档对象的正确方法,我将不胜感激。

我要大胆地说,这是不可能做到的,也不应该做到的。

如果您替换当前的document对象(您的script正在运行),那么您的脚本不会超出范围/上下文吗?

我做了一个小提琴(http://jsfiddle.net/V3Rsh/),表明这不能做(至少在Firefox 20中)。如果您查看控制台,它会在document分配之前和之后报告相同的URL。但是,如果您调试并在第一个console.log()上设置一个断点,并在控制台手动运行document = newDocument()行,您将看到创建了一个具有"about:blank"URL的document对象。但是随后对console.log()的调用并没有反映这一点。

最新更新