11

本を読んでいるときに見つけたコードをテストしています。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()ます。

4

1 に答える 1

18

これは単なる警告であることに注意してください - しかし、尊重されるべき良いものです。これは実際にはJSLintと呼ばれるチェッカーによって生成されています。 can-be-a-form-of-eval/ .

基本的に、これの基礎は「eval は悪」であり、document.write評価の実行に使用できます。

これに加えて、上記では言及されていませんが、document.write単純なテストを除いて、可能な限り避けてください。「完了」と見なされた後に DOM に書き込みます。この時点での変更は、サポートされている DOM メソッドを使用してのみ行う必要があります。これに関する追加の詳細は、なぜ document.write が「悪い習慣」と見なされるのですか? で説明されています。- 「安全で DOM フレンドリーなDOM 操作メソッドを使用する方がはるかに優れている」 ( document.createElementelement.appendChildなど)と述べられている場所。これの具体的な例は、https://developer.mozilla.org/en-US/docs/Web/API/Document_object_model/Using_the_W3C_DOM_Level_1_Coreにあります。

于 2013-02-24T03:09:13.207 に答える