2016-09-21 116 views
0

我想加载清单的content_scripts中的jquery,但是当我加载一个页面也有一个jquery已经加载在他们的页面下拉停止工作,出于某种原因,我找不到任何错误在我的控制台日志中。所以如果我在清单的content_scripts中删除了jquery,那么下拉菜单就可以正常工作,这就是为什么我认为这是因为当前页面已经加载了jquery库。谷歌铬扩展清单加载jquery

"content_scripts": [{ 
     "matches": [ 
      "http://*/*", 
      "https://*/*" 
     ], 
     "js": ["js/jquery-2.2.4.js", "js/custom.js"], 
    }], 
+1

从[docs](https://developer.chrome.com/extensions/content_scripts#execution-environment):“内容脚本在一个称为孤立世界的特殊环境中执行,他们可以访问页面的DOM它们被注入到,但不是被页面创建的任何JavaScript变量或函数。“该页面的jQuery不能干扰你的内容脚本。这里一定有更多的事情要做。你的分机究竟做了什么? – DelightedD0D

+0

请同时提供什么是'custom.js'在做 –

+0

请编辑问题为主题:包括一个**完整的** [mcve]重复的问题。通常包括一个* manifest.json *,一些背景*和*内容脚本。寻求调试帮助的问题(“**为什么不是这个代码工作?”)必须包括:►期望的行为,►特定问题或错误*和*►在问题中重现问题所需的最短代码**本身**。没有明确问题陈述的问题对其他读者无益。请参阅:“**如何创建[mcve] **”,[我可以在此处询问哪些主题?](http://stackoverflow.com/help/on-topic)和[问]。 – Makyen

回答

1

内容脚本运行在与主窗口不同的js上下文中,所以它们不能发生冲突。

你也可以尝试通过执行从窗口上下文范围中删除您的jQuery:

var myJquery = jQuery.noConflict(true); 

但是你需要通过添加到您的清单文件script_context部分移到你的脚本document_start这个有效果:

"content_scripts": [{ 
     "matches": [ 
      "http://*/*", 
      "https://*/*" 
     ], 
     "js": ["js/jquery-2.2.4.js", "js/custom.js"], 
     "run_at": "document_start" 
    }] 

但是,如果你这样做了,你的custom.js脚本必须准备好在文档尚未准备好的状态下执行。

如果您附加更多来源,这将是更相关的解决方案。