如何在bookmarklet中包含外部javascript文件
How do I include external javascript files in bookmarklets?
我正在为我为工作编写的一堆脚本制作cdn。我过去必须分发它们,每个人都得到文件并将其安装在自己的计算机上,但我现在将它们转移到amazoncloudfront/s3实例中。
我将使用它来插入bookmarklet:http://allben.net/post/2010/01/30/CSS-JavaScript-Injection-Bookmarklets
然而,按照我以前的方式,我使用了jquery bookmarklet生成器。这是不同的,我不知道如何包括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());
显然,这不起作用,因为bookmarklet不再注入jquery。那么,最好的方法是什么呢?
我想,您面临的问题是jQuery bookmarklet生成器无法在页面中提供$
。它将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
和$
变量。如果您需要在已经使用这些变量的页面上运行bookmarklet,请使用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文件(不是运行时压缩)
- 如何包含特定于每个视图angularjs的javascript文件
- 将数据从javascript文件导入VB.Net页面
- Chrome加载旧版本的Javascript文件
- 操作员”;新的“;根据我想在几个JavaScript文件中使用的类,在JavaScript中使用
- gulp-if-javascript文件,但不在gulp-useref的特定目录中
- 如何在visualstudio中调试web api时编辑javascript文件
- 关于引入外部javascript文件的问题&css通过https
- 有没有办法在tinymceiframe中加载一个外部javascript文件
- 什么'是在asp.net MVC中将本地化的resources.resx文件转换为javascript文件的有效
- 在一个javascript文件中为整个网站创建标签
- 如何在定义js文件后为外部javascript文件设置变量
- 显示IIS上javascript文件(SOAP请求)的XML响应
- ResolveUrl没有'我似乎不适合当链接到具有动态虚拟目录的外部javascript文件时
- 我应该将MVC视图特定的javascript文件放在哪个文件夹中
- Django'支持Javascript文件中的翻译
- MVC正在忽略我的Javascript文件
- 为什么不't我的ruby代码与javascript文件一起插入
- 在Javascript文件中获取PHP变量
- 如何在Windows中将Javascript文件编译成二进制文件