1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
|
---
title: webNavigation.onDOMContentLoaded
slug: Mozilla/Add-ons/WebExtensions/API/webNavigation/onDOMContentLoaded
tags:
- API
- onDOMContentLoaded
- webNavigation
- webNavigation.onDOMContentLoaded
translation_of: Mozilla/Add-ons/WebExtensions/API/webNavigation/onDOMContentLoaded
---
<div>{{AddonSidebar()}}</div>
<p>在页面中触发<a href="/en-US/docs/Web/Events/DOMContentLoaded">DOMContentLoaded</a> 事件时触发。此时,文档被加载和解析,并且DOM被完全构造,但链接的资源(例如图像,样式表和子框架(subframes))可能尚未被加载。</p>
<h2 id="Syntax">Syntax</h2>
<pre class="syntaxbox brush:js">browser.webNavigation.onDOMContentLoaded.addListener(
listener, // function
filter // optional object
)
browser.webNavigation.onDOMContentLoaded.removeListener(listener)
browser.webNavigation.onDOMContentLoaded.hasListener(listener)
</pre>
<p>事件有三个方法:</p>
<dl>
<dt><code>addListener(callback)</code></dt>
<dd>为此事件添加监听方法.</dd>
<dt><code>removeListener(listener)</code></dt>
<dd>停止监听此事件. <code>listener</code> 参数为需要移出的监听方法.</dd>
<dt><code>hasListener(listener)</code></dt>
<dd>检测是否有 <code>listener</code> 被注册在事件上. 如果有返回 <code>true</code> , 否则返回<code>false</code> .</dd>
</dl>
<h2 id="addListener_syntax">addListener syntax</h2>
<h3 id="参数">参数</h3>
<dl>
<dt><code>callback</code></dt>
<dd>
<p>为当此事件发生是需要被调用的函数. 该函数将传递以下参数:</p>
<dl class="reference-values">
<dt><code>details</code></dt>
<dd><a href="#details"><code>object</code></a>. 有关导航(navigation)事件的详细信息.</dd>
</dl>
</dd>
<dt><code>filter</code>{{optional_inline}}</dt>
<dd>
<p><code>object</code>. 包含单个属性 <code>url</code> 的对象, 这是一个 {{WebExtAPIRef("events.UrlFilter")}} <font face="consolas, Liberation Mono, courier, monospace"><span style="background-color: rgba(220, 220, 220, 0.5);">数组</span></font>对象. 如果包含此参数,则该事件将仅触发转换为与数组中至少一个<code>UrlFilter</code>匹配的URL。 在数组中。如果您省略此参数,则该事件将触发所有转换。</p>
</dd>
</dl>
<h2 id="Additional_objects">Additional objects</h2>
<h3 id="details">details</h3>
<dl class="reference-values">
<dt><code>tabId</code></dt>
<dd><code>integer</code>. The ID of the tab in which the navigation has occurred.</dd>
<dt><code>url</code></dt>
<dd><code>string</code>. The URL to which the given frame has navigated.</dd>
<dt><code>processId</code></dt>
<dd><code>integer</code>. The ID of the process in which this tab is being rendered.</dd>
<dt><code>frameId</code></dt>
<dd><code>integer</code>. Frame in which the navigation is occurring. 0 indicates that navigation happens in the tab's top-level browsing context, not in a nested <a href="/en-US/docs/Web/HTML/Element/iframe">iframe</a>. A positive value indicates that navigation happens in a nested iframe. Frame IDs are unique for a given tab and process.</dd>
<dt><code>timeStamp</code></dt>
<dd><code>number</code>. The time at which <code>DOMContentLoaded</code> was fired, in <a href="https://en.wikipedia.org/wiki/Unix_time">milliseconds since the epoch</a>.</dd>
</dl>
<h2 id="Browser_compatibility">Browser compatibility</h2>
<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
<p>{{Compat("webextensions.api.webNavigation.onDOMContentLoaded")}}</p>
<h2 id="Examples">Examples</h2>
<p>Logs the target URLs for <code>onDOMContentLoaded</code>, if the target URL's hostname contains "example.com" or starts with "developer".</p>
<pre class="brush: js">var filter = {
url:
[
{hostContains: "example.com"},
{hostPrefix: "developer"}
]
}
function logOnDOMContentLoaded(details) {
console.log("onDOMContentLoaded: " + details.url);
}
browser.webNavigation.<code>onDOMContentLoaded</code>.addListener(logOnDOMContentLoaded, filter);
</pre>
<p>{{WebExtExamples}}</p>
<div class="note"><strong>Acknowledgements</strong>
<p>This API is based on Chromium's <a href="https://developer.chrome.com/extensions/webNavigation#event-onBeforeNavigate"><code>chrome.webNavigation</code></a> API. This documentation is derived from <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/web_navigation.json"><code>web_navigation.json</code></a> in the Chromium code.</p>
<p>Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.</p>
</div>
<div class="hidden">
<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
// * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</pre>
</div>
|