我遇到了这个问题:
<body onload="document.body.innerHTML="<script>alert('hi')</script>"">
问题是我无法在引号内部再次使用引号,请问有什么想法吗?
我遇到了这个问题:
<body onload="document.body.innerHTML="<script>alert('hi')</script>"">
问题是我无法在引号内部再次使用引号,请问有什么想法吗?
为了在由"
字符限定的HTML属性内表示"
字符,请使用实体"
我建议使用JavaScript附加事件监听器attaching event listeners using JavaScript,而不是使用内部事件属性。这会大大简化事情。
请注意,浏览器不会执行使用innerHTML添加到文档中的JavaScript代码。如果要动态添加脚本,请使用createElement
/ appendChild
等方法。
<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>'" >
我认为真正不可能(没有"
)的是在警报框中放置"
和'
。
您可以使用反引号(`)、单引号和双引号的组合。
代码:
<body onload="document.body.innerHTML=`<script>alert('hi')</script>`">
啊!首先,不要那样做。 :D
可以尝试这样:
<body></body>
<script>
window.onload = function () {
document.body.innerHTML = "<script>alert('hi')</script>";
}
</script>
...会更好。考虑一些JQuery的解决方案。
即使是那种特定的方法,我也不建议使用,但我猜想你只是想测试如何在页面加载后添加HTML内容,而不是真正想使用alert()
。 ;) 如果是这样的话,可以尝试像这样:
<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>