javascript - Greasemonkey 的简单替代品

标签 javascript google-chrome browser greasemonkey

我喜欢 GM 的概念,但在实践中,除非你一直使用它并且是绝对的 JS 神,否则它是不可能使用的(也许我只是很烂?)。

如果有一个小的扩展,可以使用几行 JS 并在某个站点的页面加载后运行它们,那将非常有用。但这不是通用汽车所做的。使用 GM,您必须处理多个框架以及层层叠叠的恼人安全问题和范围。 即使您只是忽略适当的程序并使用 unsafewindow 或其他黑客之一,它通常仍然不起作用。

想出 JS 很容易,你可以在浏览器控制台中运行它来做你想做的事,但是当转移到用户脚本时这永远不会起作用。 greasemonkey 中是否有我可以更改的任何设置或完全不同的扩展以方便使用?

注意:我使用 Chrome,因此适用于该特定浏览器的解决方案可加分。

总结:我想要一种方法来自动运行与特定页面上的控制台具有相同范围/权限的脚本。

最佳答案

没有比 Firefox 的 Greasemonkey 或自动运行用户 JS 的 Chrome 用户脚本更简单的替代方案。你可以 write your own extension/add-on , 但没有太多意义。

如果您不关心 GM 和用户脚本提供的超棒的额外功能,并且总是只想“(获取)几行 JS 并在某个站点的页面加载后(运行)它们”——忽略 iframe ,然后只需使用以下代码作为所有脚本的基本模板:

// ==UserScript==
// @name    _Base template for simple, cross-browser, JS injection.
// @match   *://YOUR_SERVER.COM/YOUR_PATH/*
// @run-at  document-start
// ==/UserScript==

if (window.top != window.self)  //-- Don't run on frames or iframes.
    return;


function scriptMain () {
    // PUT ALL OF YOUR CODE HERE, INCLUDING ANY FUNCTIONS YOU CREATE.
    console.log ("Hello World!");
}

window.addEventListener ("load", scriptMainLoader, false);

function scriptMainLoader () {
    addJS_Node (null, null, scriptMain);
}

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;
    targ.appendChild (scriptNode);
}

请注意,@run-at document-start 是必需的(对于 Chrome),但您的代码仍会在文档加载时触发。

关于javascript - Greasemonkey 的简单替代品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10958386/

相关文章:

Javascript/jQuery 获取 iFrame 索引

html - 如何创建弹出登录框?

c# - 在 asp.net-mvc 的 Controller 中,如何获取有关用户浏览器的信息?

javascript - 检查 Backbone.js 中的引荐来源网址

javascript - Jquery 自动完成选择 TypeError : ui. 项未定义

javascript - 用javascript模拟左右方向键事件

css - Chrome CSS级联

javascript - 删除事件不能防止默认

html - 按钮背景颜色未显示在边缘,但适用于 Firefox 和 Chrome

html - 列表在 firefox 和 internet explorer 上显示错误,但在 chrome 上不显示