我想在已经包含 jQuery 的页面上写一个小的用户脚本。我可以从 chrome 开发人员控制台访问 $ 对象,但不能从用户脚本访问 - 它只是说 jQuery || $ || window.jQuery 未定义。
PS:用户脚本作为扩展安装。
我想在已经包含 jQuery 的页面上写一个小的用户脚本。我可以从 chrome 开发人员控制台访问 $ 对象,但不能从用户脚本访问 - 它只是说 jQuery || $ || window.jQuery 未定义。
PS:用户脚本作为扩展安装。
用户脚本不会在与页面相同的上下文中运行。为了访问页面的 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();});
});
您必须在 Userscript 本身中包含 jQuery,页面是否包含它并不重要。
更新:我的好人 Brock(感谢您的提醒!)通知我上一个链接对 Chrome 扩展没有用,所以我发现了一些其他链接,告诉您如何为 Chrome 包含 jQuery(您必须将其添加到manifest.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