我遇到了这个问题:
<body onload="document.body.innerHTML="<script>alert('hi')</script>"">
问题是我不能在引号内的引号内使用引号。 有什么想法吗?
答案 0 :(得分:24)
要在由"
个字符分隔的HTML属性中表示"
个字符,请使用实体"
我建议使用attaching event listeners using JavaScript,而不是使用内部事件属性。它极大地简化了事情。
但请注意,browsers will not execute JavaScript added to the document with innerHTML
。如果要以编程方式添加脚本,请使用createElement
/ appendChild
等。
答案 1 :(得分:6)
<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>'" >
在没有"
的情况下,我认为真的不可能将"
和'
放在警报中。
答案 2 :(得分:1)
尔加!首先,不要这样做。 :d
类似的东西:
<body></body>
<script>
window.onload = function () {
document.body.innerHTML = "<script>alert('hi')</script>";
}
</script>
。 。 。会更好。考虑一些JQuery解决方案。
即使是那种特定的方法,我也不建议,但我怀疑你只是在加载页面后测试如何在HTML主体中添加内容,而不是真正想要使用{{1} }。 ;)如果是这种情况,请尝试这样的事情:
alert()
答案 3 :(得分:1)
您可以组合使用反引号 (`)、单引号和双引号。
代码:
<body onload="document.body.innerHTML=`<script>alert('hi')</script>`">