如何将特殊字符插入 HTML iframe 文档?
How do I insert special characters to an HTML iframe document?
我正在尝试将 JavaScript 添加到 HTML 沙盒 iframe。
JavaScript 代码包含一个奇怪的字符。
当代码在 iframe 之外 运行 时,它可以完美运行。
不幸的是,Stack Overflow 无法显示此字符。
<!DOCTYPE html>
<body>
<script>
console.log("Special character: ''")
</script>
</body>
</html>
现在我想使用 srcdoc 将此代码插入到沙箱 iframe 中。
<!DOCTYPE html>
<body>
<iframe sandbox = "allow-scripts" srcdoc = "<!DOCTYPE html><body><script>console.log(Special character: '')</script></body></html>"></iframe>
</body>
</html>
当我在 Firefox 网络浏览器中 运行 上面的代码时,它有时会在控制台中显示该字符。
在其他时候,它会引发错误:Uncaught SyntaxError: invalid range in character class
。
这很奇怪的主要原因是每次的结果都不一样。
这让我想知道这是否是 Firefox 的错误。请说明原因。
在这上面花了很多时间之后,我决定采用另一种方法。
<!DOCTYPE html>
<body>
<iframe id = frame sandbox = "allow-scripts allow-same-origin"></iframe>
<script>
const content = frame.contentWindow || frame.contentDocument
content.document.open()
content.document.write("<!DOCTYPE html><body><script>console.log(Special character: '')<\/script></body></html>")
content.document.close()
</script>
</body>
</html>
这一次,我得到了一个不同的错误:missing ) after argument list
。我知道没有括号丢失。导致问题的是特殊字符。
最后,我尝试了别的东西。
<!DOCTYPE html>
<body>
<iframe id = frame sandbox = "allow-scripts allow-same-origin"></iframe>
<script>
const content = frame.contentWindow || frame.contentDocument
content.document.open()
content.document.write("<!DOCTYPE html><body></body></html>")
content.document.close()
content.eval("console.log(Special character: '')")
</script>
</body>
</html>
上面的代码有时有效,有时无效。
这非常令人沮丧。
上面代码的另一个问题是我必须在 iframe 沙箱中包含 allow-same-origin
,我希望 iframe 尽可能安全并且我真的不想给 iframe 太多控制权。
这只是 Firefox 的一个错误吗?即使我不能在控制台显示这个字符,如何保证不出现错误?
编辑:
Stack Overflow 不断从我的 post 中删除该字符。
这里是 fiddle 而不是。
感谢您的宝贵意见。
这不是 Firefox 的错误。
当您处理特殊字符时,您不能将它们直接粘贴为普通 HTML。另外,我犯了一个大错误。我正在编写以下代码。
<!DOCTYPE html>
<body>
<iframe access = "allow-scripts" srcdoc = "<!DOCTYPE html><body><script>console.log(Special character: '')</script></body></html>"></iframe>
</body>
</html>
如果仔细观察,您会发现我在 console.log
函数中遗漏了引号。这导致了 JavaScript 错误。 JavaScript charCodeAt()
函数对于获取字符代码很有用,@Old Geezer 帮助我理解了这一点。
有了字符码后,就可以写HTML码了。
<!DOCTYPE html>
<body>
<iframe access = "allow-scripts" srcdoc = "<!DOCTYPE html><body><script>console.log("Special character: ''")</script></body></html>"></iframe>
</body>
</html>
上面的代码运行没有任何错误。字符在不同浏览器上显示不同这一事实不是问题,因为这个特定字符没有可见的字形。
我正在尝试将 JavaScript 添加到 HTML 沙盒 iframe。 JavaScript 代码包含一个奇怪的字符。 当代码在 iframe 之外 运行 时,它可以完美运行。 不幸的是,Stack Overflow 无法显示此字符。
<!DOCTYPE html>
<body>
<script>
console.log("Special character: ''")
</script>
</body>
</html>
现在我想使用 srcdoc 将此代码插入到沙箱 iframe 中。
<!DOCTYPE html>
<body>
<iframe sandbox = "allow-scripts" srcdoc = "<!DOCTYPE html><body><script>console.log(Special character: '')</script></body></html>"></iframe>
</body>
</html>
当我在 Firefox 网络浏览器中 运行 上面的代码时,它有时会在控制台中显示该字符。
在其他时候,它会引发错误:Uncaught SyntaxError: invalid range in character class
。
这很奇怪的主要原因是每次的结果都不一样。
这让我想知道这是否是 Firefox 的错误。请说明原因。
在这上面花了很多时间之后,我决定采用另一种方法。
<!DOCTYPE html>
<body>
<iframe id = frame sandbox = "allow-scripts allow-same-origin"></iframe>
<script>
const content = frame.contentWindow || frame.contentDocument
content.document.open()
content.document.write("<!DOCTYPE html><body><script>console.log(Special character: '')<\/script></body></html>")
content.document.close()
</script>
</body>
</html>
这一次,我得到了一个不同的错误:missing ) after argument list
。我知道没有括号丢失。导致问题的是特殊字符。
最后,我尝试了别的东西。
<!DOCTYPE html>
<body>
<iframe id = frame sandbox = "allow-scripts allow-same-origin"></iframe>
<script>
const content = frame.contentWindow || frame.contentDocument
content.document.open()
content.document.write("<!DOCTYPE html><body></body></html>")
content.document.close()
content.eval("console.log(Special character: '')")
</script>
</body>
</html>
上面的代码有时有效,有时无效。
这非常令人沮丧。
上面代码的另一个问题是我必须在 iframe 沙箱中包含 allow-same-origin
,我希望 iframe 尽可能安全并且我真的不想给 iframe 太多控制权。
这只是 Firefox 的一个错误吗?即使我不能在控制台显示这个字符,如何保证不出现错误?
编辑: Stack Overflow 不断从我的 post 中删除该字符。 这里是 fiddle 而不是。
感谢您的宝贵意见。 这不是 Firefox 的错误。 当您处理特殊字符时,您不能将它们直接粘贴为普通 HTML。另外,我犯了一个大错误。我正在编写以下代码。
<!DOCTYPE html>
<body>
<iframe access = "allow-scripts" srcdoc = "<!DOCTYPE html><body><script>console.log(Special character: '')</script></body></html>"></iframe>
</body>
</html>
如果仔细观察,您会发现我在 console.log
函数中遗漏了引号。这导致了 JavaScript 错误。 JavaScript charCodeAt()
函数对于获取字符代码很有用,@Old Geezer 帮助我理解了这一点。
有了字符码后,就可以写HTML码了。
<!DOCTYPE html>
<body>
<iframe access = "allow-scripts" srcdoc = "<!DOCTYPE html><body><script>console.log("Special character: ''")</script></body></html>"></iframe>
</body>
</html>
上面的代码运行没有任何错误。字符在不同浏览器上显示不同这一事实不是问题,因为这个特定字符没有可见的字形。