19
|
vsync Qantas 94 Heavy · 技术社区 · 15 年前 |
![]() |
1
39
考虑这个简化的例子:
浏览器的HTML解析器将看到
HTML解析器不知道JavaScript语法-它只知道
(它还知道您不能嵌套
|
![]() |
2
4
假设您正在编写一个工具来检测文本块中脚本块的开始和结束。假设你看到了
在不了解脚本语言语法的情况下,您的工具如何知道这是一个脚本块,而不是两个脚本块之间的”)blah?
网络浏览器就是这样一种工具。这是一个合理的做法,确保你从来没有混淆网络浏览器
|
![]() |
3
3
这样它就不会被计算,而是作为字符串插入。 |
![]() |
4
3
这是防止XML/XHTML和HTML验证器对源代码大喊大叫的一个坏方法。 |
![]() |
5
0
有些浏览器在解析文档时往往“动作”很快,当它们找到一个脚本标记时(即使它本身在一块JS中),也会立即尝试执行javascript。为了避免这种情况,他们打破了标签的贴花。 |
![]() |
6
0
有关此问题的完整讨论,请参阅:
简而言之,您的代码分为两个独立的步骤进行解析。 第一个是XML。这意味着元素<script>正在查找</script>。记住XML元素是内容无关的,这一点很重要。这意味着解析器不知道 然而 里面有javascript。 一旦它包含了<script>元素的内容, 然后 它处理文本块,可能是javascript。 通过使用字符串连接运算符拆分标记,可以防止常量绊倒XML阶段。 一个简单的解决方案是将<和>放在javascript文本中。 |
![]() |
Softly · 单选按钮未按预期取值 1 年前 |
|
SlickRed · 我无法使用JS关注HTML元素 1 年前 |
![]() |
assembler · Nextjs没有处理发布请求 1 年前 |
|
BADRUM · 执行两个获取功能后,如何导航回页面? 1 年前 |
![]() |
Toniq · javascript为php保存多维数组 1 年前 |