gpt4 book ai didi

php - 无法渲染页面,或者 DOMDocumentFragment 在 <script> 标签上中断,或者其他什么

转载 作者:行者123 更新时间:2023-12-02 20:26:37 24 4
gpt4 key购买 nike

经过一番尝试和错误后,我注意到我的模板引擎在包含 <script> 的模板文件上失败。标签。这显然是一个大问题,但我似乎无法弄清楚它失败的原因。

它失败的方式也很奇特。随着<script>标签被注释掉,页面加载正常,但是带有 <script>标签取消注释,页面加载,并且执行查看源代码显示整个页面已加载,但浏览器中没有呈现任何内容。 Firebug DOM 检查器显示一个 head 标签和一个空的正文。

最奇怪的部分(至少我认为)是这些脚本标签针对外部文件。如果 CDATA 部分之外有页内脚本,我可以理解一些意外的结果。

我会发布使用的代码,但它非常长,我不知道从哪里开始,即;问题出在哪里,如果确实存在的话。

简而言之,我的模板引擎创建了一个 DOMDocument对象,然后创建 DOMDocumentFragment对象来管理模板的各个部分。第一次解析迭代通常将整个模板文件加载到片段中,然后根据某些参数沿着树向下工作,寻找某些标签。

TL;DR:有谁知道为什么 PHP DOM 类可能由于脚本标记而无法正确构建页面?如果我将它们包含在 <![CDATA[ ... ]]> 中标签,它什么也不做。仅当我删除或注释掉标签时,浏览器才会加载并呈现页面。

最佳答案

脚本标记的内容是否包含在 CDATA block 中?如果不是,DOM 将尝试解析其内容并失败。确保所有脚本代码都包装在 CDATA block 中,并且 DOM 解析器配置为输出 CDATA block (否则输出将包含空脚本标记)。

我还建议将尽可能多的脚本代码放在页外,并将其放在自己的文件中,然后使用 <script src="/path/to/script.js"></script> 链接到该文件。标记。这避免了 DOM 解析问题,并且还有一个额外的好处,即浏览器只需要加载代码一次,并且可以将其缓存在后续的页面 View 中。

关于php - 无法渲染页面,或者 DOMDocumentFragment 在 &lt;script&gt; 标签上中断,或者其他什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4743552/

24 4 0