gpt4 book ai didi

javascript - 如何在书签中包含外部 javascript 文件?

转载 作者:行者123 更新时间:2023-11-28 02:26:33 25 4
gpt4 key购买 nike

我正在为我为工作编写的一堆脚本制作一个 CDN。我过去必须分发它们,每个人获取文件并将其安装在他们的计算机上,但我将它们移动到亚马逊 cloudfront/s3 实例。

我将使用它来注入(inject)书签:http://allben.net/post/2010/01/30/CSS-JavaScript-Injection-Bookmarklets

但是,我使用 jquery 书签生成器来执行此操作。这与此不同,我不知道如何包含 jquery 如果我想使用它。

这是一个示例脚本:

javascript:(function(){var%20s=document.createElement('script');s.setAttribute('src','cdn.domain.com/scripts/somescript.js');document.getElementsByTagName('body')[0].appendChild(s);})();

它会被放入书签中。

脚本:

alert($(somecontainer).size());

显然这不起作用,因为书签不再注入(inject) jquery。那么,最好的方法是什么?

最佳答案

我猜您面临的问题是 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());
})();

关于javascript - 如何在书签中包含外部 javascript 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14846269/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com