子窗口内的“文档”意外地指父级

时间:2015-04-04 20:54:39

标签: javascript dom parent document

我打开了一个子窗口,然后使用

编写HTML等等
childhandle.document.write(...)

工作得很好。 HTML包含ID' foo'的输入。 然后我试了

childhandle.document.addEventListener('DOMContentLoaded', function(event) { (document.getElementById('foo').value = 'bar'; });

这给出了一个TypeError。如果我将其更改为

,它会起作用
childhandle.document.addEventListener('DOMContentLoaded', function(event) { (childhandle.document.getElementById('foo').value = 'bar'; });

似乎在版本1中,代码必须一直在寻找元素' foo'在父文档中。这看起来很奇怪 - 当然EventListener函数正在孩子的范围内运行? 有人能解释一下这里发生了什么吗?感谢。

1 个答案:

答案 0 :(得分:1)

匿名回调函数在父窗口中定义,其中childhandle已定义,document引用父窗口文档,执行它不重要。
尝试使用this来引用当前文档。

childhandle.document.addEventListener('DOMContentLoaded', 
    function(event) { 
        this.getElementById('foo').value = 'bar'; 
    }
);