0

我有一个设置了 JuiceUI 菜单的 ASP.NET 4.0 网站。当页面默认出现时,一切看起来都很好。在我的页面上有一个表格显示(在代码中使用 GridView)和底部的分页,调用类似 PostBack

__doPostBack('ctl00$MainContent$GridView21','Page$3')

导致 JuiceUI 菜单中断。

Web 开发者控制台中的错误代码说

未捕获的类型错误:无法读取 null 的属性“eval”

完整的跟踪:

Uncaught TypeError: Cannot read property 'eval' of null juice.js:97
(anonymous function) juice.js:97
jQuery.extend.each jquery-1.8.2.js:605
(anonymous function) juice.js:96
jQuery.extend.each jquery-1.8.2.js:611
ready juice.js:55
fire jquery-1.8.2.js:974
self.fireWith jquery-1.8.2.js:1082
jQuery.extend.ready jquery-1.8.2.js:406
DOMContentLoaded

似乎与第一次加载页面时看到以下监视表达式的事实有关:

widget.options: Object 
proto: Object 

单击分页#后,值更改为:

widget.options: Object 
icons: Object 
menu: null 
position: Object 
proto: Object 

是什么导致 doPostback 时小部件选项中的菜单为空,我能做些什么来解决这个问题?

有人可以阐明正在发生的事情以及可以采取哪些措施来解决此问题?

谢谢

4

1 回答 1

1

代码中有一个错误。

必须从以下位置更改 juice.js 文件:

        $.each( widget.options, function( prop ) {
            if( this.eval ){
                var on = this.on;

至:

        $.each( widget.options, function( prop ) {
            if( this && this.eval ){
                var on = this.on;

仅供参考,即使没有更改,这在 IE 中也可以正常工作,但在 Chrome 和 Firefox 中却被破坏了。包括“this”检查解决了这个问题。希望果汁开发人员看到这篇文章并做出更改或回复。

于 2013-02-27T16:49:02.547 回答