我知道这document.write
被认为是不好的做法;我希望编制一份理由清单,以提交给第三方供应商,说明为什么他们不应该document.write
在他们的分析代码的实现中使用。
请document.write
在下面说明您声称为不良做法的原因。
我知道这document.write
被认为是不好的做法;我希望编制一份理由清单,以提交给第三方供应商,说明为什么他们不应该document.write
在他们的分析代码的实现中使用。
请document.write
在下面说明您声称为不良做法的原因。
几个比较严重的问题:
document.write(以下称为 DW)在 XHTML 中不起作用
DW 不直接修改 DOM,防止进一步操作 (试图找到这方面的证据,但充其量是情境化的)
页面加载完成后执行的DW会覆盖页面,或者写一个新页面,或者不工作
DW 在遇到的地方执行:它不能在给定的节点点注入
DW 正在有效地编写序列化文本,这不是 DOM 概念上的工作方式,并且是一种创建错误的简单方法(.innerHTML 也有同样的问题)
使用安全且对 DOM 友好的DOM 操作方法要好得多
document.write
本身实际上并没有什么问题。问题是它真的很容易被滥用。大体上,甚至。
就提供分析代码(如 Google Analytics)的供应商而言,这实际上是他们分发此类代码段的最简单方法
只要您在文档加载后不尝试使用它document.write
,在我看来,这并不是天生的邪恶。
它可以阻止您的页面
document.write
仅在页面加载时有效;如果在页面加载完成后调用它,它将覆盖整个页面。
这实际上意味着您必须从内联脚本块中调用它 - 这将阻止浏览器处理随后的页面部分。在写入块完成之前,不会下载脚本和图像。
另一个合法使用document.write
来自 HTML5 Boilerplate index.html示例。
<!-- Grab Google CDN's jQuery, with a protocol relative URL; fall back to local if offline -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.3/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="js/libs/jquery-1.6.3.min.js"><\/script>')</script>
我还看到了使用json2.js JSON 解析/字符串化polyfill(IE7 及更低版本需要)的相同技术。
<script>window.JSON || document.write('<script src="json2.js"><\/script>')</script>
亲:
骗局: