web-dev-qa-db-ja.com

HTML:引用符内で引用符を使用する

私はこの問題で立ち往生しています:

<body onload="document.body.innerHTML="<script>alert('hi')</script>"">

問題は、引用符内の引用符内で引用符を使用できないことです。何か案は?

16
flimmerkiste

"文字で区切られたHTML属性内の"文字を表すには、エンティティ&quot;を使用します

ただし、組み込みイベント属性を使用するよりも、 attachingイベントリスナーをJavaScript を使用することをお勧めします。物事を大幅に簡素化します。

ただし、 browsersは、innerHTML を使用してドキュメントに追加されたJavaScriptを実行しないことに注意してください。スクリプトをプログラムで追加する場合は、createElement/appendChildなどを使用します。

27
Quentin
_<body onload='document.body.innerHTML="<script>alert(\"hi\")</script>"'>
_

または

_<body onload="document.body.innerHTML='<script>alert(\'hi\')</script>'">
_

動作しますが、スクリプトはブラウザがコードを解析した後に追加されるため、実行されません。

引用符内の引用符内の引用符が必要な場合は、次のようにします:<body onload="document.body.innerHTML='<script>alert(\'\\\'hi\\\'\')</script>'" >

_&quot;_なしで本当に不可能なこと(私は思う)は、_"_と_'_をアラートに入れることです。

7
Mageek

ガ!まず、そのようにしないでください。 :D

何かのようなもの:

_<body></body>

<script>
    window.onload = function () {
        document.body.innerHTML = "<script>alert('hi')</script>";
    }
</script>
_

。 。 。方が良いだろう。同様にいくつかのJQueryソリューションも検討してください。

その特定のアプローチでもお勧めしませんが、実際にalert()を使用するのではなく、ページのロード後にHTMLの本文にコンテンツを追加する方法をテストしているだけだと思います。 。 ;)その場合は、次のようなことを試してください。

_<body></body>

<script>
    window.onload = function () {
        document.body.innerHTML = "some text";
        alert('hi'); // if you really want to test that the JS is working after load.
    }
</script>
_
1
talemyn