问题解释
我编写了一个小扩展程序,在几乎所有网站上完全没有错误/警告,但是有少量页面,它们不会让它运行。例如。 chrome webstore本身。
我认为必须在清单中插入/更改某些内容,但由于“< all_urls>”的定义在比赛模式中我不知道是什么。
我使用Chrome开发者工具检查了“ui.html”的内容。内容必须插入每个网站,但在插件不起作用的网站上,它们不会出现。
也许谷歌会阻止代码注入? 所以我向你们提问:我该怎么办?
使用的代码
我的清单:
{
"manifest_version": 2,
"name": "Drag gestures",
"description": "While holding down right mouse button, move left to go back and right to go forth the browser history.
Easy as pie but damn useful.",
"version": "1.0",
"options_page": "popup.html",
"browser_action": {
"default_icon": "icon-48px.png",
"default_popup": "popup.html"
},
"icons": {
"16": "icon-16px.png",
"48": "icon-48px.png",
"128": "icon-128px.png"
},
"background": {
"page": "ui.html",
"css": "ui.css",
"persistent": false
},
"content_scripts": [
{
"js": ["jquery.js", "draggestures.js"],
"html": ["ui.html"],
"css": ["ui.css"],
"matches": ["<all_urls>"],
"run_at": "document_end"
}
],
"web_accessible_resources": [
"jquery-1.10.2.min.map",
"jquery.js",
"draggestures.js",
"ui.html",
"ui.css",
"move.png"
]
}
ui内容加载在draggestures.js:
中// append the html with the move divs
$("body").append($('<div>').load(getHTML));
ui.html包含:
<div class="move" id="idle"></div>
<div class="move" id="back"></div>
<div class="move" id="forth"></div>
更新
问题是,有些网站阻止了javascript的注入,因此没有任何反应。得到了这个想法,感谢rsanchez下面链接的帖子。我经历过例如关于ebay产品描述的iframe中的不当行为。尚未找到解决方案。更新2
Rob W向我指出了关于iframe的正确方向。我所要做的就是在“content-scripts”的清单中插入“”all_frames“:true,”。现在一切都很棒。
谢谢:)