我懂文件。写作被认为是坏习惯;我希望整理一份理由清单,提交给第三方供应商,告诉他们为什么不应该使用文档。编写分析代码的实现。

请附上申领文件的理由。下面是一个坏习惯。


当前回答

它覆盖了页面上的内容,这是最明显的原因,但我不认为它“坏”。

除非使用JavaScript创建整个文档,否则它没有多大用处,在这种情况下,您可以从document.write开始。

即便如此,在使用文档时,您并没有真正利用DOM。写——你只是在向文档中倾倒一团文本,所以我认为这是糟糕的形式。

其他回答

文档其实没什么问题。写作本身。问题是它很容易被误用。严重,甚至。

对于提供分析代码的供应商(如谷歌analytics)来说,这实际上是他们分发此类代码片段的最简单方法

它使脚本保持较小 他们不必担心重写已经建立的onload事件或包括必要的抽象来安全地添加onload事件 它非常兼容

只要你不尝试在文件加载后使用它,文件。在我看来,写作本身并不是邪恶的。

一个简单的原因为什么文件。写是一个不好的做法,因为你无法想出一个你找不到更好的替代方案的场景。 另一个原因是您正在处理字符串而不是对象(这是非常原始的)。 它只附加到文档中。 它没有MVC(模型-视图-控制器)模式的美感。 使用ajax+jQuery或angularJS来呈现动态内容要强大得多。

这是我的两便士,一般来说,你不应该使用文件。为繁重的任务编写,但有一个实例绝对有用:

http://www.quirksmode.org/blog/archives/2005/06/three_javascrip_1.html

我最近在尝试创建AJAX滑块库时发现了这一点。我创建了两个嵌套的div,并应用宽度/高度和溢出:隐藏到外部<div>与JS。这样,在浏览器禁用JS的情况下,div将浮动以容纳图库中的图像-一些漂亮的优雅降级。

问题是,与上面的文章一样,这种JS劫持CSS直到页面加载后才开始,导致div加载时出现短暂的闪光。所以我需要写一个CSS规则,或包括一个表,作为页面加载。

显然,这在XHTML中行不通,但由于XHTML似乎是一个死鸭(并且在IE中呈现为标签汤),可能值得重新评估您对DOCTYPE的选择…

根据Google-Chrome Dev Tools的Lighthouse Audit所做的分析,

对于连接速度较慢的用户,通过document.write()动态注入的外部脚本可能会将页面加载延迟数十秒。

文件的另一种合法使用。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解析/stringify polyfill (IE7及以下版本需要)的相同技术。

<script>window.JSON || document.write('<script src="json2.js"><\/script>')</script>