diff options
Diffstat (limited to 'files/zh-cn/web/events/domcontentloaded/index.html')
-rw-r--r-- | files/zh-cn/web/events/domcontentloaded/index.html | 128 |
1 files changed, 0 insertions, 128 deletions
diff --git a/files/zh-cn/web/events/domcontentloaded/index.html b/files/zh-cn/web/events/domcontentloaded/index.html deleted file mode 100644 index 67c6a44253..0000000000 --- a/files/zh-cn/web/events/domcontentloaded/index.html +++ /dev/null @@ -1,128 +0,0 @@ ---- -title: DOMContentLoaded -slug: Web/Events/DOMContentLoaded -tags: - - DOMContentLoaded - - Window.open() - - load - - window.onload -translation_of: Web/API/Window/DOMContentLoaded_event ---- -<p>当初始的 <strong>HTML </strong>文档被完全加载和解析完成之后,<strong><code>DOMContentLoaded</code> </strong>事件被触发,而无需等待样式表、图像和子框架的完全加载。</p> - -<p>模拟的css文件:CSS.php</p> - -<pre class="notranslate"><?php -sleep(3);</pre> - -<p>测试代码:</p> - -<pre class="notranslate"><link rel="stylesheet" href="css.php"> -<script> -document.addEventListener('DOMContentLoaded',function(){ - console.log('3 seconds passed'); -}); -</script></pre> - -<p>如果将link置于script之后,就会立即打印。</p> - -<p>{{Note("同步 JavaScript 会暂停 DOM 的解析。")}}</p> - -<p>{{Note("还有许多通用和独立的库提供跨浏览器方法来检测 DOM 是否已准备就绪")}}</p> - -<h2 id="加速中">加速中</h2> - -<p>如果您希望 DOM 在用户请求页面后尽可能快地解析,你可以做的一些事情是把你的 <a href="https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Synchronous_and_Asynchronous_Requests">JavaScript 异步化</a> 以及 <a href="https://developers.google.com/speed/docs/insights/OptimizeCSSDelivery">优化样式表的加载</a>, 由于被并行加载而减慢页面加载,从主 html 文档“窃取”流量。</p> - -<h2 id="常规信息">常规信息</h2> - -<dl> - <dt style="float: left; text-align: right; width: 120px;">规范</dt> - <dd style="margin: 0pt 0pt 0pt 120px;"><a class="external" href="http://www.whatwg.org/specs/web-apps/current-work/multipage/the-end.html#the-end">HTML5</a></dd> - <dt style="float: left; text-align: right; width: 120px;">接口</dt> - <dd style="margin: 0pt 0pt 0pt 120px;">Event</dd> - <dt style="float: left; text-align: right; width: 120px;">是否冒泡</dt> - <dd style="margin: 0pt 0pt 0pt 120px;">是</dd> - <dt style="float: left; text-align: right; width: 120px;">能否取消</dt> - <dd style="margin: 0pt 0pt 0pt 120px;">能 (尽管一个简单的事件被指定为不可取消)</dd> - <dt style="float: left; text-align: right; width: 120px;">目标</dt> - <dd style="margin: 0pt 0pt 0pt 120px;">Document</dd> - <dt style="float: left; text-align: right; width: 120px;">默认行为</dt> - <dd style="margin: 0pt 0pt 0pt 120px;">无.</dd> -</dl> - -<h2 id="属性">属性</h2> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">属性</th> - <th scope="col">类型</th> - <th scope="col">描述</th> - </tr> - </thead> - <tbody> - <tr> - <td><code>target</code> {{readonlyInline}}</td> - <td>{{domxref("EventTarget")}}</td> - <td>产生该事件的对象(DOM树中最顶级的那个对象).</td> - </tr> - <tr> - <td><code>type</code> {{readonlyInline}}</td> - <td>{{domxref("DOMString")}}</td> - <td>事件类型.</td> - </tr> - <tr> - <td><code>bubbles</code> {{readonlyInline}}</td> - <td>{{jsxref("Boolean")}}</td> - <td>该事件是否冒泡.</td> - </tr> - <tr> - <td><code>cancelable</code> {{readonlyInline}}</td> - <td>{{jsxref("Boolean")}}</td> - <td>该事件是否可取消默认行为.</td> - </tr> - </tbody> -</table> - -<h2 id="示例" style="margin-bottom: 20px; font-size: 28px; line-height: 28px;">示例</h2> - -<pre class="notranslate"><code><script> - document.addEventListener("DOMContentLoaded", function(event) { - console.log("DOM fully loaded and parsed"); - }); -</script></code></pre> - -<pre class="notranslate"><code><script> - document.addEventListener("DOMContentLoaded", function(event) { - console.log("DOM fully loaded and parsed"); - }); - - for(var i=0; i<1000000000; i++){ - // </code>这个同步脚本将延迟DOM的解析。 - // 所以DOMContentLoaded事件稍后将启动。 -<code> } </code><code> -</script></code></pre> - -<h2 id="浏览器兼容性">浏览器兼容性</h2> - -<p>{{Compat("api.Window.DOMContentLoaded_event")}}</p> - -<p><span>至少从Gecko 1.9.2,Chrome 6,以及Safari 4开始,就已经实现了</span><span>该事件的</span><span>冒泡行为.</span></p> - -<h3 id="兼容不支持该事件的浏览器">兼容不支持该事件的浏览器</h3> - -<p>在IE8中,可以使用<code>readystatechange</code>事件来检测DOM文档是否加载完毕.在更早的IE版本中,可以通过每隔一段时间执行一次<code>document.documentElement.doScroll("left")来检测这一状态,</code>因为这条代码在DOM加载完毕之前执行时会抛出错误(throw an error)。</p> - -<p>诸如jQuery这样的通用JS库,会提供跨浏览器的方法来检测DOM是否加载完成。也有其他专门实现该功能的脚本:<a href="https://github.com/dperini/ContentLoaded/blob/master/src/contentloaded.js" title="https://github.com/dperini/ContentLoaded/blob/master/src/contentloaded.js">contentloaded.js</a> (只能添一个时间监听函数)以及<a href="https://github.com/addyosmani/jquery.parts/blob/master/jquery.documentReady.js" title="https://github.com/addyosmani/jquery.parts/blob/master/jquery.documentReady.js">jquery.documentReady.js</a> (并不依赖jQuery,虽然名字中有jquery).</p> - -<h2 id="相关事件">相关事件</h2> - -<ul> - <li>{{event("DOMContentLoaded")}}</li> - <li>{{event("readystatechange")}}</li> - <li>{{event("load")}}</li> - <li>{{event("beforeunload")}}</li> - <li>{{event("unload")}}</li> - <li><a href="https://codepen.io/gildata/pen/VrzXOb">DOMContentLoaded demo</a></li> -</ul> |