在升级到jQuery 1.6.2之后,当尝试在页面上执行javascript时,globalEval会抛出一个错误
After upgrading to jQuery 1.6.2, globalEval throws an error when trying to execute javascript on page
我从jQuery 1.4.2升级到1.6.2,现在我得到错误(在IE中)。页面上有JavaScript通过jQuery globalEval()
函数
// Evaluates a script in a global context
// Workarounds based on findings by Jim Driscoll
// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context
globalEval: function( data ) {
if ( data && rnotwhite.test( data ) ) {
// We use execScript on Internet Explorer
// We use an anonymous function so that context is window
// rather than jQuery in Firefox
( window.execScript || function( data ) {
window[ "eval" ].call( window, data );
} )( data );
}
},
在IE中调用抛出异常:
"错误:由于错误80020101,无法完成操作。"
被执行的data参数是页面上被<!-- -->
包围的javascript变量
<!--
var id = '"ctrl90900'";
var url = '"myur.com/blah.html'";
-->
我使用IE9, jQuery 1.6.2不知道为什么这会导致错误。
如果在传递给execScript的脚本中有任何错误,就Internet Explorer而言,它将报告80020101而不是原始错误。
所以,也检查丢失的分号和不支持IE的JS特性。
对于较短的代码段,我发现最有效的调试技术是注释掉部分代码,看看错误是否仍然出现。如果没有,检查刚刚被注释掉的代码块是否有上述错误。
这可能是代码的注释,这是无效的JavaScript,在这个时代是不必要的。
你可以用这个regex去掉它…
$.globalEval(str.replace(/<!--'s*(['s'S]*?)'s*-->/, '$1'));
jsFiddle .
只是想添加一点—每当在包含JavaScript的ajax调用的PHP脚本中,我都会得到80020101错误。PHP文件中的脚本也以某种方式打破,并拒绝在指定的div中呈现任何脚本(PHP的其他元素通过,但JavaScript内部没有任何内容-我试图使用HighChart绘制图表)。
在包含的PHP文件中的JavaScript中有一个未定义的PHP函数(用于回显一些文本)。我是用Firebug找到这个的。
所以底线是,确保代码中没有任何未定义的函数通过AJAX返回。
相关文章:
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 借助asp.net验证或java脚本对多个文本进行验证
- java.net和javascript之间正则表达式的差异
- 如何从Java/scala调用js美化程序
- 如何使用json将对象列表从java转换为javascript
- Java脚本时间添加
- WebDriverException:tinyMCE未在selenium Web driver java中定义
- 如何将字符串值从php页面发送到java脚本页面
- 如何使用Spring MVC将Facebook返回的响应数据保存在Java类中
- 如何轻松地将服务器端变量从Java代码转移到客户端代码
- DOM事件通过JSON转换为java
- 在 Java 中的 JavaScript 函数中插入 Wicket 值
- JSON分析错误:Java中AJAX、Javascript和Servlet的意外EOF
- java脚本在Chrome和其他浏览器中对LocaleTimeString的不同行为
- 错误405:向Java控制器(Ajax)发送JSON时找不到POST方法
- Java-彩票统计解析器
- 如何将变量数据从Java类获取到JavaScript
- Java脚本将URL转换为已保存的URL时出错
- 将这些正则表达式从javascript转换为Java
- 如何使用Java脚本创建提交按钮's的拖放功能