3

是否可以使用 Greasemonkey 脚本将 JS 脚本从其他站点添加到页面,以便它们运行?

4

2 回答 2

7

您可以简单地创建一个脚本元素并将其添加到文档中

// ==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 这样的库,你想在你的用户脚本中使用它会变得很棘手。我知道有两种方法:

  • 一种是使用greasemonkey的require标签。
  • 另一个需要像上面显示的那样创建相同的脚本元素,但是您需要等待它加载,因此scriptElement.onload = function () {}需要,然后您必须使用它unsafeWindow来访问库中的变量。

如果这是一个纯greasemonkey 脚本,我推荐第一种方法,因为只有你的脚本是从站点封装的。

于 2013-01-13T00:06:00.597 回答
0

是的,您可以这样做,例如:

let script = document.createElement('script');
script.src = "http://example.com/somescript.js";
document.body.appendChild(script);  // execute the script
document.body.removeChild(script);
于 2013-01-12T23:51:56.140 回答