首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Google中注册DOMContentLoaded

在Google中注册DOMContentLoaded
EN

Stack Overflow用户
提问于 2011-02-22 18:12:49
回答 2查看 14K关注 0票数 12

在火狐和Safari中,我设法用window.addEventListener('DOMContentLoaded',PageShowHandler (False)注册了DOMContentLoaded事件;通过将该语句插入到js脚本(或者更清楚地说,在加载页面的dom之后执行),我的特定函数成功地在加载这个特定页面的DOM时运行。

我似乎不能在Chrome上这么做。我对chrome.tabs.onUpdated等事件做了一些戏法,但它并不是在每个实例中都有效;所有这些事件都不能达到DOMContentLoaded实现的目的。例如,当我点击网页上的特定链接时,这不会像我的DOMContentLoaded事件那样注入我的代码。

代码语言:javascript
运行
复制
window.addEventListener('DOMContentLoaded', PageShowHandler, false);

引入inject.js似乎没有注册该事件。

这是清单:

代码语言:javascript
运行
复制
{
"name" : "gMail Adder ",
"version" : "1.0",
"description" : "Google Chrome Gmail Adder",
"options_page": "options.html",
"background_page": "background.html",
"run_at": "document_start",
"permissions": [
   "tabs",
   "history",
   "http://*/*",
   "https://*/*"
],
"content_scripts": [
  {
   "matches": ["*://*.google.mail.com/*", "https://*.google.mail.com/*"     ,"http://mail.google.com/*" ,"https://mail.google.com/*", "https://www.google.com/*", "http://www.google.com/*", "file:///*"],
   "css": ["toggle.css"],
   "js": ["jquery-1.4.4.min.js", "inject.js"]
  }
],
"browser_action" : {
"default_icon" : "Quest Icon 11.png",
"default_popup": "popup.html"
}
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-22 18:35:06

如果将"run_at":"document_start"标志添加到清单中的内容脚本中,则在构造DOM之前会注入它们,因此每次都应该触发DOMContentLoaded

代码语言:javascript
运行
复制
"content_scripts": [
  {
   "matches": ["*://*.google.mail.com/*", "https://*.google.mail.com/*"     ,"http://mail.google.com/*" ,"https://mail.google.com/*", "https://www.google.com/*", "http://www.google.com/*", "file:///*"],
   "css": ["toggle.css"],
   "js": ["jquery-1.4.4.min.js", "inject.js"],
   "run_at": "document_start"
  }
],

(有关执行命令这里的更多信息)

票数 24
EN

Stack Overflow用户

发布于 2011-02-23 15:26:53

我在注入的脚本中使用了DOMFocusIn事件,从而成功地完成了任务。此事件正确地模拟了DOMContentLoaded在火狐和Safari中实现的触发行为。

代码语言:javascript
运行
复制
window.addEventListener('DOMFocusIn', PageShowHandler, false);

如果我没有设置为"contents_scripts":中的true "all_frames"字段,这将无法正常工作。

代码语言:javascript
运行
复制
{
"name" : "gMail Adder ",
"version" : "1.0",
"description" : "Google Chrome Gmail Adder",
"options_page": "options.html",
"background_page": "background.html",
"run_at": "document_start",
"permissions": [
   "tabs",
   "history",
   "http://*/*",
   "https://*/*"
],
"content_scripts": [
  {
   "matches": ["*://*.google.mail.com/*", "https://*.google.mail.com/*" ,"http://mail.google.com/*" ,"https://mail.google.com/*", "https://www.google.com/*", "http://www.google.com/*", "file:///*"],
   "css": ["toggle.css"],
   "js": ["jquery-1.4.4.min.js", "inject.js"],
   "all_frames" : true
  }
],
"browser_action" : {
"default_icon" : "Quest Icon 11.png",
"default_popup": "dialog.html"
}
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5082094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档