我知道使用document.createElement('script')
添加脚本的过程,但是对于本地文件它是否相同?我尝试过使用一些function.toString()
调用,但效率非常低,宁可存储我需要单独添加的文件,有一个加载程序,并且每天调用它。有任何想法吗?这是用户脚本的全部内容,我希望能够完美地转换为扩展。感谢。
答案 0 :(得分:1)
将<script>
src
设置为本地文件有效。 EG:
addJS_Node (null, 'file:///D:/SAMPLE_DIR/YOUR_CODE.js');
function addJS_Node (text, s_URL, funcToRun) {
var D = document;
var scriptNode = D.createElement ('script');
scriptNode.type = "text/javascript";
if (text) scriptNode.textContent = text;
if (s_URL) scriptNode.src = s_URL;
if (funcToRun) scriptNode.textContent = '(' + funcToRun.toString() + ')()';
var targ = D.getElementsByTagName ('head')[0] || D.body || D.documentElement;
//--- Don't error check here. if DOM not available, should throw error.
targ.appendChild (scriptNode);
}
重要说明:您几乎总是必须指定完整路径,因为您希望文件从本地文件系统加载。浏览器会将相对路径解释为相对于当前网页(或<base>
标记值)。
回复:
这是用户脚本的全部内容我希望能够完美地转换为扩展名
对于扩展,最好不要将JS注入目标页面,而是将其保留在“孤立的世界”范围内。
对于扩展程序或sometimes even just dedicated Chrome userscripts,可以使用manifest轻松地将文件包含到该范围内。 EG(来自here):
{
"name": "My extension",
...
"content_scripts": [
{
"matches": ["http://www.google.com/*"],
"css": ["mystyles.css"],
"js": ["jquery.js", "myscript.js"]
}
],
...
}