【发布时间】:2017-02-05 02:46:41
【问题描述】:
是否可以使用 Greasemonkey 脚本将 JS 脚本从其他站点添加到页面中,以便它们运行?
【问题讨论】:
是否可以使用 Greasemonkey 脚本将 JS 脚本从其他站点添加到页面中,以便它们运行?
【问题讨论】:
您可以简单地创建一个脚本元素并将其添加到文档中
// ==UserScript==
// @name My Fancy New Userscript
// @description enter something useful
// @match http://*/*
// ==/UserScript==
(function () {
var scriptElement = document.createElement( "script" );
scriptElement.type = "text/javascript";
scriptElement.src = "url to your script";
document.body.appendChild( scriptElement );
})();
如果您只是想让脚本运行,那么这就足够了。 如果它是一个像 jQuery 这样的库,你想在你的用户脚本中使用它会变得很棘手。 我知道有两种方法:
scriptElement.onload = function () {},然后您必须使用unsafeWindow 来访问库中的变量。 如果这是一个纯greasemonkey脚本,我推荐第一种方法,因为只有你的脚本是从站点封装的。
【讨论】:
@require。您无需将此代码包装在匿名函数中。
scriptElement 多次,以拉入多个外部javascript吗? (如 script1.js 和 script2.js)
scriptElement1、scriptElement2 和 scriptElement3,并且一切正常。我弄清楚了为什么它没有提取数据 - DNS 解析失败了,因为我忘记更新本地 DNS 服务器信息 xD
是的,例如,您可以这样做:
let script = document.createElement('script');
script.src = "http://example.com/somescript.js";
document.body.appendChild(script); // execute the script
document.body.removeChild(script);
【讨论】: