如何从用户脚本访问页面jQuery?

时间:2013-02-15 18:26:26

标签: javascript jquery google-chrome userscripts

我想在已经包含jQuery的页面上编写一个小用户脚本。我可以从chrome开发者控制台访问$ object,但不能从用户脚本访问 - 它只是说jQuery || $ || window.jQuery未定义。

PS:用户脚本作为扩展名安装。

2 个答案:

答案 0 :(得分:3)

用户脚本不在与页面相同的上下文中运行。为了访问页面的javascript环境,您需要像这样运行它:

var execute = function (body) {
    if(typeof body === "function") { body = "(" + body + ")();"; }
    var el = document.createElement("script");
    el.textContent = body;
    document.body.appendChild(el);
    return el;
};

execute(function() {
    $.noop();
}

奖励:您还可以从CDN加载外部脚本。

var load = function (src, on_load, on_error) {
    var el = document.createElement("script");
    el.setAttribute("src", src);
    if (on_load != null) { el.addEventListener("load", on_load); }
    if (on_error != null) { el.addEventListener("error", on_error); }
    document.body.appendChild(el);
    return el;
};
load("//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js", function () {
    execute(function(){$.noop();});
});

答案 1 :(得分:1)

您必须在Userscript本身中包含jQuery,页面是否包含它并不重要。

<强> 更新 : 我的好男人Brock(感谢您的抬头!)告诉我,之前的链接对Chrome扩展程序没用,所以我找到了一些其他链接,告诉您如何为Chrome添加jQuery(您必须在清单中添加它) .json文件)

Chrome扩展程序中的Jquery
http://blog.michael-forster.de/2009/08/using-jquery-to-build-google-chrome.html

有关manifest.json的更多信息 http://developer.chrome.com/extensions/manifest.html