为什么noscript移到body标签而不是head标签中

用户名

在我的PHP项目中,我将noscript标记放在head标记中,如下所示。

<!DOCTYPE html>
<head>
    <noscript></noscript>
</head>
<body>
</body>
</html>

这是php脚本获取和呈现模板文件。

PHP脚本像下面..

$file = file_get_contents( $templatePath ); 
$dom = new \DOMDocument();
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true; // not working
$dom->encoding = 'UTF-8'; 

libxml_use_internal_errors( true );
$dom->loadHTML( mb_convert_encoding($file, 'HTML-ENTITIES', 'UTF-8') , LIBXML_NOERROR | LIBXML_NOWARNING );
libxml_clear_errors();

echo $dom->saveHtml();

在本地主机中,它按原样显示。这样就可以了

但是,当我将此代码推送到服务器上并在浏览器上看到此页面时,noscript标记将移入body标记,如下所示。

<html>
<head></head>
<body>
    <noscript></noscript>
</body>
</html>

您猜为什么会导致这种情况吗?
下面是有关我们服务器环境的详细信息。尽管我不认为这会引起问题,但还是存在一些差异。

【环境】
本地-Mac上的
XAMPP
-Apache / 2.4.18(Unix)PHP / 5.6.20

服务器
-Apache / 2.2.15(Unix)PHP / 5.6.15

=======================================
我也像下面的代码一样进行了测试。

echo <<< EOM
<!DOCTYPE html>
<head>
    <noscript></noscript>
</head>
<body>
</body>
</html>
EOM;

它适用于两种环境。因此DOMDocument可能是罪魁祸首。我不知道...但是由于我们的框架,我无法使用此代码。所以我仍然必须搜索问题。

============================================
这些是阿帕奇服务器上的模块。

Loaded Modules:
 core_module (static)
 mpm_prefork_module (static)
 http_module (static)
 so_module (static)
 auth_basic_module (shared)
 auth_digest_module (shared)
 authn_file_module (shared)
 authn_alias_module (shared)
 authn_anon_module (shared)
 authn_dbm_module (shared)
 authn_default_module (shared)
 authz_host_module (shared)
 authz_user_module (shared)
 authz_owner_module (shared)
 authz_groupfile_module (shared)
 authz_dbm_module (shared)
 authz_default_module (shared)
 ldap_module (shared)
 authnz_ldap_module (shared)
 include_module (shared)
 log_config_module (shared)
 logio_module (shared)
 env_module (shared)
 ext_filter_module (shared)
 mime_magic_module (shared)
 expires_module (shared)
 deflate_module (shared)
 headers_module (shared)
 usertrack_module (shared)
 setenvif_module (shared)
 mime_module (shared)
 dav_module (shared)
 status_module (shared)
 autoindex_module (shared)
 info_module (shared)
 dav_fs_module (shared)
 vhost_alias_module (shared)
 negotiation_module (shared)
 dir_module (shared)
 actions_module (shared)
 speling_module (shared)
 userdir_module (shared)
 alias_module (shared)
 substitute_module (shared)
 rewrite_module (shared)
 proxy_module (shared)
 proxy_balancer_module (shared)
 proxy_ftp_module (shared)
 proxy_http_module (shared)
 proxy_ajp_module (shared)
 proxy_connect_module (shared)
 cache_module (shared)
 suexec_module (shared)
 disk_cache_module (shared)
 cgi_module (shared)
 version_module (shared)
 php5_module (shared)
 ssl_module (shared)
用户名

我自己找到了答案。在我的服务器上,libxml版本是2.7.6
在我的本地主机中,libxml版本是2.8.0
根据此更新日志
直到2.8.0,存在一个bug,HTML parser error with <noscript> in the <head>
并且此错误已在2.8.0版本中修复。
所以我将服务器上的libxml升级到2.8.0,从而解决了该问题!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么noscript移到body标签而不是head标签中

来自分类Dev

DOM树是否在LIVE DOM查看器的BODY部分中显示标题标签,而不是在HEAD部分中显示标题标签?为什么会这样呢?

来自分类Dev

为什么<noscript>中的html标签显示为文本

来自分类Dev

ASP.nET核心Web应用程序(.NET Core RC2)-为什么head标签中的项目显示在body标签中

来自分类Dev

删除TinyMCE中的html,head,body标签

来自分类Dev

为什么chrome扩展程序加载除其head和body标签之外的html模板?

来自分类Dev

为什么chrome扩展程序加载除其head和body标签之外的html模板?

来自分类Dev

检测NoScript(不是标签,扩展名)

来自分类Dev

为什么BODY标签没有覆盖HTML标签属性?

来自分类Dev

为什么在jsf中使用任何a4j元素会在页面代码中添加第二个body和head标签?

来自分类Dev

<head>标签弹出到<body>标签

来自分类Dev

为什么硬盘标签以C而不是A开头?

来自分类Dev

为什么在Rails 4上的ruby无法在head标签中重新加载任何内容

来自分类Dev

为什么要呈现 <head> 标签内的文本?

来自分类Dev

为什么即使在编写文档后浏览器的页脚标签也会在 body 标签中拉出。下面的例子?

来自分类Dev

为什么脚本位于body标签的末尾

来自分类Dev

为什么PHP将所有内容从<head>标记移到<body>标记?

来自分类Dev

如何在jQuery而不是body标签中包含它?

来自分类Dev

为什么ctrl-t插入奇怪的文本而不是在fzf / vim中打开新标签页?

来自分类Dev

为什么标签中没有下标?

来自分类Dev

为什么标签未显示在图表中

来自分类Dev

为什么DOCTYPE声明不是HTML元素或HTML标签?

来自分类Dev

为什么body标签之后的脚本标签在childNodes中计数

来自分类Dev

joomla的Head标签中的Javascript

来自分类Dev

如何从gatsby图像包装器中删除`<noscript>`标签?

来自分类Dev

HTML5:为什么需要在主体标签的末尾而不是在主体标签的开头放置脚本标签?

来自分类Dev

PHP生成的SVG文件在浏览器中添加了head和body标签

来自分类Dev

“ body”标签中“ this”的奇怪行为

来自分类Dev

为什么锚标签是蓝色的?

Related 相关文章

  1. 1

    为什么noscript移到body标签而不是head标签中

  2. 2

    DOM树是否在LIVE DOM查看器的BODY部分中显示标题标签,而不是在HEAD部分中显示标题标签?为什么会这样呢?

  3. 3

    为什么<noscript>中的html标签显示为文本

  4. 4

    ASP.nET核心Web应用程序(.NET Core RC2)-为什么head标签中的项目显示在body标签中

  5. 5

    删除TinyMCE中的html,head,body标签

  6. 6

    为什么chrome扩展程序加载除其head和body标签之外的html模板?

  7. 7

    为什么chrome扩展程序加载除其head和body标签之外的html模板?

  8. 8

    检测NoScript(不是标签,扩展名)

  9. 9

    为什么BODY标签没有覆盖HTML标签属性?

  10. 10

    为什么在jsf中使用任何a4j元素会在页面代码中添加第二个body和head标签?

  11. 11

    <head>标签弹出到<body>标签

  12. 12

    为什么硬盘标签以C而不是A开头?

  13. 13

    为什么在Rails 4上的ruby无法在head标签中重新加载任何内容

  14. 14

    为什么要呈现 <head> 标签内的文本?

  15. 15

    为什么即使在编写文档后浏览器的页脚标签也会在 body 标签中拉出。下面的例子?

  16. 16

    为什么脚本位于body标签的末尾

  17. 17

    为什么PHP将所有内容从<head>标记移到<body>标记?

  18. 18

    如何在jQuery而不是body标签中包含它?

  19. 19

    为什么ctrl-t插入奇怪的文本而不是在fzf / vim中打开新标签页?

  20. 20

    为什么标签中没有下标?

  21. 21

    为什么标签未显示在图表中

  22. 22

    为什么DOCTYPE声明不是HTML元素或HTML标签?

  23. 23

    为什么body标签之后的脚本标签在childNodes中计数

  24. 24

    joomla的Head标签中的Javascript

  25. 25

    如何从gatsby图像包装器中删除`<noscript>`标签?

  26. 26

    HTML5:为什么需要在主体标签的末尾而不是在主体标签的开头放置脚本标签?

  27. 27

    PHP生成的SVG文件在浏览器中添加了head和body标签

  28. 28

    “ body”标签中“ this”的奇怪行为

  29. 29

    为什么锚标签是蓝色的?

热门标签

归档