为什么我收到这个 jsfiddle 错误,document.write 可以是 eval 的一种形式

2023-12-25

我正在测试我在看书时发现的代码。我在 JS fiddle 中测试时遇到此错误,document.write可以是 eval 的一种形式。

     var text = '<html><body bgcolor=linen><p>' +
    'This is <b>bold<\/b>!<\/p><\/body><\/html>';

var tags = /[^<>]+|<(\/?)([A-Za-z]+)([^<>]*)>/g;
var a, i;
while ((a = tags.exec(text))) {
    for (i = 0; i < a.length; i += 1) {
        document.writeln(('// [' + i + '] ' + a[i]).entityify());
    }
    document.writeln();
}   

我在两行中都收到上述 JSfiddle 警告document.writeln().


请注意,这只是一个警告,但却是一个值得尊重的好警告。它实际上是由一个名为的检查器生成的JSLint http://en.wikipedia.org/wiki/JSLint- 关于此警告的推理的好读物可在http://www.jameswiseman.com/blog/2011/03/31/jslint-messages-document-write-can-be-a-form-of-eval/ http://www.jameswiseman.com/blog/2011/03/31/jslint-messages-document-write-can-be-a-form-of-eval/.

基本上,其基础是“评估是邪恶的 http://www.jameswiseman.com/blog/2011/01/18/jslint-messages-eval-is-evil/“ - 然后document.write可用于执行评估。

除此之外 - 上面没有提到,请避免document.write只要有可能,除了简单的测试之外。它在被认为“完成”后写入 DOM,此时只能使用支持的 DOM 方法进行修改。有关此内容的更多详细信息请参见为什么 document.write 被认为是“不好的做法”? https://stackoverflow.com/questions/802854/why-is-document-write-considered-a-bad-practice- 其中提到“使用安全且 DOM 友好的方法要好得多”DOM 操作方法 https://developer.mozilla.org/en-US/docs/Web/API/Document" (document.createElement, element.appendChild, ETC。)。一个很好的具体例子可以在https://developer.mozilla.org/en-US/docs/Web/API/Document_object_model/Using_the_W3C_DOM_Level_1_Core https://developer.mozilla.org/en-US/docs/Web/API/Document_object_model/Using_the_W3C_DOM_Level_1_Core.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我收到这个 jsfiddle 错误,document.write 可以是 eval 的一种形式 的相关文章

随机推荐