0

无论如何要调试从父级写入新窗口的代码?

我尝试过 innerHTML、textContent、document.write 和 append child。但是它们都没有出现在 chrome/ff 的源控制台中。任何关联的文件都会这样做,但源本身不会。

也许有一种方法可以使用套接字或其他一些 API 来做到这一点......

这是我执行 doc.write() 或任何其他方法后的样子,非常简单:/

在此处输入图像描述

*注意:如果我包含对文件的引用,<script src="jquery.js"></script>则可以调试该文件,但不能在根 html 页面本身中嵌入任何脚本。

我最后的方法是将所有脚本放在一个文件中并从窗口链接到它们,但如果可能的话,能够自己调试窗口脚本也会很好。因为我的解决方案将是动态的,并且在 js 中创建新窗口比创建文件更容易。

4

1 回答 1

1

我尝试过 innerHTML、textContent、document.write 和 append child。但是它们都没有出现在 chrome/ff 的源控制台中。任何关联的文件都会这样做,但源本身不会。

应该是这样的。这些方法都不会生成/更改文件的源,并且您index.html是故意为空的。如果您使用data:-URI,我想您可以检查它的来源。

上面所有的方法都确实修改了 DOM,所以你可以在 DOM 检查器(Elements你的开发工具的选项卡)中查看结果。或者,在 的情况下document.write,它们会拦截导致从与源不同的流创建的 DOM 的解析器。

要检查document.write以纯文本形式写入的内容,您可以将它们包装在 logger 函数中:

(function (d) {
     var w = d.write,
         wl = d.writeln;
     d.write = function() {
         this.source = (this.source || "") + [].join.call(arguments);
         w.apply(this, arguments);
     };
     d.writeln = function() {
         this.source = (this.source || "") + [].join.call(arguments) + "\n";
         w.apply(this, arguments);
     };
})(theDocumentYoureWritingTo);

// after you're done, you can
console.log(theDocumentYouWroteTo.source);
于 2013-03-26T12:37:51.017 回答