本を読んでいるときに見つけたコードをテストしています。 JSフィドルでテスト中にこのエラーが発生しました。_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();
}
_
document.writeln()
の両方の行で上記のJSfiddle警告が表示されます。
これは単なる警告であることに注意してください-しかし、尊重されるべき良い警告です。これは実際には JSLint -と呼ばれるチェッカーによって生成されており、この警告の理由についての良い読み物は http://www.jameswiseman.com/blog/2011/03)で入手できます。/31/jslint-messages-document-write-can-be-a-form-of-eval / 。
基本的に、これの基礎は、 " eval is evil "-であり、document.write
を使用して評価を実行できるということです。
これに加えて、上記では言及されていませんが、単純なテストを除いて、可能な限りdocument.write
を避けてください。 「完全」であると見なされた後にDOMに書き込みます。この時点での変更は、サポートされているDOMメソッドを使用してのみ行う必要があります。これに関する追加の詳細は document.writeが「悪い習慣」と見なされるのはなぜですか? -「安全でDOMフレンドリーなものを使用する方がはるかに良い DOM操作」」で説明されています。メソッド "(document.createElement
、element.appendChild
など)。これの良い具体例は https://developer.mozilla.org/en-US/docs/Web/API/Document_object_model/Using_the_W3C_DOM_Level_1_Core で入手できます。