我猜你面临的问题是 jQuery 小书签生成器$
在页面中不可用。它将 jQuery 变量隔离在一个函数中,然后在运行后将 jQuery 完全从页面中删除。
以下是此处代码的修改版本:http: //benalman.com/projects/run-jquery-code-bookmarklet/应该可以工作。
function (e, a, g, h, f, c, b, d) {
if (!(f = e.jQuery) || g > f.fn.jquery || h(f)) {
c = a.createElement("script");
c.type = "text/javascript";
c.src = "http://ajax.googleapis.com/ajax/libs/jquery/" + g + "/jquery.min.js";
c.onload = c.onreadystatechange = function () {
if (!b && (!(d = this.readyState) || d == "loaded" || d == "complete")) {
var s = document.createElement('script');
s.setAttribute('src', 'cdn.domain.com/scripts/somescript.js');
document.getElementsByTagName('body')[0].appendChild(s)
}
};
a.documentElement.childNodes[0].appendChild(c)
}
})(window, document, "1.3.2")
请记住,这将替换页面上的任何jQuery
变量$
。如果您需要在已经使用这些变量的页面上运行小书签,请使用jQuery.noConflict(1)
. 例如_jq = e.jQuery.noConflict(1)
,将让您使用_jq
而不是,$
并将返回原始值$
和jQuery
原始值。例子:
alert(_jq(somecontainer).size());
如果你想在你的 .js 代码中使用 noConflict 但也使用 $ ,请将你的代码包装在一个函数中并创建一个本地范围的$
. 例子:
(function(){
var $ = _jq; // this $ will not affect any $ that exists outside this function.
alert($(somecontainer).size());
})();