我做了一个扩展,可以对页面进行DOM操作。该扩展程序可以在chrome上正常运行,但是内容脚本中的jquery无法在firefox中的某些网站(如Facebook,quora和nytimes only )上加载。我可以使用javascript来操纵DOM,但不能使用jquery来操纵。
jQuery.Deferred异常:$未定义mainReady @ moz-extension:// 39071a01-> 0540-46e3-b16e-96bd576ca827 / content.js:81:5 @ moz-extension://39071a01-0540-46e3-b16e-96bd576ca827/content.js:139:13 l @ moz-extension:// 39071a01-0540-46e3-b16e-96bd576ca827 / jquery-> 3.3.1.min.js:2:29373 延迟/然后/a/3.3.1.min.js:2:29677 未定义
我在这些网站的控制台中收到上述错误。错误指向mainready()
中的第一行jQuery。这行代码是用于更改body
backgroundColor
的基本jQuery。
这是所有代码的GitHub链接:https://github.com/rishabhmw/sauron
内容脚本的方法:
chrome.runtime.sendMessage({ type: "ToggleQuery", origin: "ContentScript" }, function(callbackResponse){
if(callbackResponse.action == "On"){
main();
$(document).ready(function(){
mainReady();
//WHAT'S NEW AND LOADING TRANSITIONS OVER, MANIPULATE ONCE MORE. STOPGAP SOLUTION.
setTimeout(function(){mainReady();}, 500);
});
}});
清单:
{
"manifest_version": 2,
"name": "Sauron - Dark mode for all websites",
"version": "1.1",
"author": "Rishabh Maheshwari",
"description": "Beautiful dark mode for all websites. Open Source, Free and Secure. Protect your eyes when you surf in dark enviroments.",
"browser_action":{
"default_popup": "popup.html"
},
"icons": {
"16": "icon16.png",
"48": "icon48.png",
"128": "icon128.png"
},
"background":{
"scripts": ["background.js"],
"persistent": false
},
"content_scripts": [
{
"matches": ["<all_urls>"],
"run_at": "document_start",
"all_frames":true,
"js": [ "jquery-3.3.1.min.js","mutation-summary.js","sauron-library.js","content.js"]
}
],
"permissions": [
"tabs",
"*://*/*",
"storage"
]
}
答案 0 :(得分:0)
问题似乎源于实例jQuery冲突或加载的Jquery脚本冲突。由于扩展中的所有脚本本身都可以和谐地工作,因此问题一定出在Firefox中。似乎Firefox没有为插件脚本和网页脚本定义不同的作用域。无论如何,只需要一点noConflict()
魔术。
var some_name_jQuery = $.noConflict();
,然后使用该名称代替$