【发布时间】:2017-07-28 18:13:42
【问题描述】:
我创建了一个大部分工作的 Firefox 扩展。我很难导入 jQuery。我已经下载到本地了。我没有收到任何错误。所以,有时扩展会工作并且 jQuery 会加载。有时它不会。其他时候我必须重新加载页面 5 或 6 次才能使其正常工作。
我不是 JavaScript 开发人员,这是我第一次尝试扩展。我用谷歌搜索并尝试了很多东西,但都没有运气。
下面是我的 manifest.json
"web_accessible_resources" : ["/jquery-3.2.1.min.js","/jquery.csv.min.js","/ui.js"],
"icons": {
"128": "icon_128px.png",
"48": "icon_48px.png"
},
"browser_action": {
"default_icon": "icon_48px.png"
},
"content_scripts": [
{
"matches": ["https://*****.com/*"],
"js": ["content.js"],
"run_at": "document_end"
}
],
"permissions":[
"activeTab"
],
"homepage_url": "https://*****.com"
}
content.js
function injectJs(link) {
var scr = document.createElement("script");
scr.type="text/javascript";
scr.src=link;
(document.head || document.body || document.documentElement).appendChild(scr);
}
injectJs(chrome.extension.getURL("/jquery-3.2.1.min.js"));
injectJs(chrome.extension.getURL("/jquery.csv.min.js"));
injectJs(chrome.extension.getURL("/ui.js"));
【问题讨论】:
-
为什么要使用
<script>将 jQuery 插入页面(使其在页面上下文中可用)?这只是在一些不太可能适用的特殊情况下你会做的事情。如果您想动态选择 inject jQuery,那么应该使用后台页面中的.tabs.executeScript()来完成,这使得 jQuery 在内容脚本上下文中可用。 -
您真正使用的是
"matches": ["https://*****.com/*"],和"homepage_url": "https://*****.com",还是*****占位符文本旨在掩盖实际 URL? -
您真的希望将 jQuery 加载到页面上下文中吗?还是您希望将其加载到内容脚本上下文中?您真的希望动态加载 jQuery,还是希望每次加载内容脚本时都加载它?
-
我在页面上插入 jquery 因为 jquery.csv 需要它。我无法控制背景页面,但扩展需要它。此外,***** 只是一个占位符。
-
另外,这是我第一次尝试做这样的事情,所以我可能做错了。
标签: javascript jquery firefox-addon