因此,我正在制作一个Chrome扩展,它使用了我制作的一些TamperMonkey脚本。我想要一个“主”javascript文件,其中包含并执行其他脚本。通过使用以下行,我很好地将其他javascript文件包含在这个主文件中:
var s1 = document.createElement('script');
s1.src = chrome.extension.getURL('h.js');
document.head.appendChild(s1);我在使用这些行时遇到的主要问题是,它获取代码并将其添加到文档头中,但从不执行。

控制台输出声明:

因此,我想我的主要问题是:我如何才能让代码执行,这样我就可以从它运行各种方法和类?
以下是“主”javascript文件:
var s1 = document.createElement('script');
s1.src = chrome.extension.getURL('h.js');
document.head.appendChild(s1);
var posinstance = new Mark(document.querySelector("#postingbody"));
posinstance.mark(positive, {
accuracy: {
value: "exactly",
limiters: [".", ",", "!"]
},
separateWordSearch: false,
diacritics: false,
className: "positive"
});下面是我想要包含的脚本:http://pastebin.com/raw/ESL1xYZ7
编辑:这是manifest.json
{ "manifest_version": 2,
"content_scripts": [ {
"exclude_globs": [ ],
"include_globs": [ "*" ],
"js":["jquery.user.js","globalVar.user.js","h.js", "word-highlighter.user.js"],
"matches": ["http://*/*","https://*/*"],
"run_at": "document_end",
"permissions":["tabs","<all_urls>"]
} ],
"converted_from_user_script": true,
"description": "did i do it right?",
"name": "Car Stuffs",
"version": "1.00",
"web_accessible_resources": ["jquery.user.js","h.js", "globalVar.user.js"]
}我也读过你多次联系我的那份文件,Makyen。在我的问题中,我包括了
你想让我做什么?
发布于 2016-12-23 21:13:14
<script>元素插入页面上下文,而不是内容脚本上下文
在内容脚本中,您似乎试图在文档中插入一个<script>元素,然后在内容脚本中使用该<script>元素中的代码。那是行不通的。在内容脚本中,插入到文档中的任何<script>元素都会在页面上下文中加载和执行包含/引用的脚本,而不是内容脚本上下文。您将无法从内容脚本中直接使用插入的<script>中包含的任何函数/对象/类/等等。
如果您确实尝试将多个脚本插入到页面上下文中,则需要说明它们是异步加载的。您可以做一些类似于标签的答案所描述的事情。然而,对于你看起来想要做的事情,这并不是如何实现它。您似乎希望将脚本动态加载到内容脚本上下文中,而不是页面脚本上下文中。
动态地将脚本加载到内容脚本上下文中
如果要将附加脚本动态加载到上下文脚本上下文中,则需要将发消息加载到后台脚本,指示后台脚本使用chrome.tabs.executeScript()注入附加脚本。这是一种理想的机制,因为将精心设计的UI所需的所有文件加载到每个页面是一个沉重的负担,因为用户需要将用户界面强加给一个可能很少使用的扩展名。如果您的UI是从网页内部开始的,那么最好在每个页面中加载一小部分代码。该代码可以监视开始与扩展的UI交互的用户。当用户确实开始与您的UI交互时,少量的代码可以向后台脚本发送消息,以注入完整UI所需的其余代码。
https://stackoverflow.com/questions/41306587
复制相似问题