为什么Jquery rest未定义
Why Jquery rest undefined?
我编写了用户脚本,在Chrome中遇到了问题(使用Greasemonkey的Firefox可以):我用坦珀蒙基;这是代码:
// Header...
(function addjQuery() {
var head = document.getElementsByTagName('head')[0] ;
var jQuery = document.createElement('script');
jQuery.type = 'text/javascript';
jQuery.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js';
head.appendChild(jQuery);
waitjQuery() ;
})();
function waitjQuery(){
typeof jQuery == 'undefined' ? setTimeout(waitjQuery, 50) : main() ;
}
函数wait中的脚本循环和typeof jQuery
(或$…)始终未定义。我已经用控制台检查了页首HTML,jQuery已经正确加载。。。
Google chrome扩展是沙盒式的。因此,您附加到DOM中的jQuery对您的脚本不可用。如果你想在你的扩展中使用jQuery,你需要在清单文件中定义它。如果你想在页面的域中运行你的脚本,那么你应该在页面中存在jQuery之后注入它。
因此,您不想检查jQuery是否存在,因为它永远不会存在,而是检查是否已附加了包含jQuery的脚本元素。
您的脚本在Greasemonkey中工作只是偶然,一旦您尝试使用任何Greasemonkeyneneneba API(GM_
函数),它就会停止工作。这是因为Greasemonkey现在愚蠢地在选择条件下关闭沙箱,并且脚本代码混合了页面范围和脚本范围(这是一种危险的做法)。
Chrome明智地没有关闭它的沙箱,所以代码在那里不起作用。但是,对于Tampermonkey,您不希望以这种方式添加jQuery
您希望使用@require
添加jQuery。这使您的脚本更快,更安全并且不太可能破坏页面上的东西或被破坏。
在这个答案的第二部分中可以找到一种很好的添加jQuery的跨浏览器技术,即在@require
可用时使用它。
相关文章:
- 为什么“;未定义的“;在JavaScript中结束循环
- 要求未定义JS回调参数
- 如何检查管道中未定义的项目
- TypeError:无法读取属性'推'未定义的JavaScript
- $window.ga在AngularJS事件中未定义
- 未捕获的TypeError无法读取未定义的属性socialsharing
- 为什么grunt contrib connect的中间件选项的第三个参数是未定义的
- 无法获取属性'selectedIndex'的未定义引用或null引用
- 如何消除代码中的未定义和其他问题
- 未捕获的ReferenceError:$未定义
- this.router在AngularJS 2中未定义
- 未捕获的类型错误:无法读取属性'删除'的未定义
- 节点fs.stat名称未定义
- REST调用总是返回未定义的(Node.JS)
- 无法获取属性'appendChild'WCF Rest中的未定义引用或null引用
- angular rest调用的响应对象属性未定义
- WordPress REST API-新类别返回未定义,但仍然可以访问
- REST中未定义jQueryAjax对象点表示法
- 为什么Jquery rest未定义
- 可以't从BackBone中的REST调用获取数据:未捕获类型错误:无法读取属性'长度'的未定义