19

私はこの問題に悩まされています:

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

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

4

4 に答える 4

31

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

ただし、組み込みのイベント属性を使用するのではなく、JavaScript を使用してイベント リスナーをアタッチすることをお勧めします。それは物事を大幅に簡素化します。

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

于 2013-11-07T19:45:55.633 に答える
10
<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;に置くこと"'アラートに入れることです。

于 2013-11-07T19:45:12.717 に答える
1

バックティック (`)、一重引用符、および二重引用符を組み合わせて使用​​できます。

コード:

<body onload="document.body.innerHTML=`<script>alert('hi')</script>`">
于 2020-12-29T18:32:36.230 に答える