0

我可以检查是否设置了 onresize 方法吗?

我以前用过:

$(window).resize(function() { /* ... */ });

由于另一个库中的未知错误,onresize不再调用。执行上述行后,它再次完美运行。该方法被调用一次。如果我再次在 Firebug 控制台中执行该行,该方法将被调用两次。

我想写一个解决方法,onresize它会在“重置”后立即设置。

我正在寻找类似的东西:(未定义空)

if (window.onresize == undefined) { /* ... */ }

外部库/框架是 Richfaces 4(扩展数据表)。一旦我对一列进行排序,一些 onresize 函数处理程序就消失了。

前:

$._data(window,'events').resize

// result on the Chrome console: 
[Object, Object, Object, Object]

使用排序后:

$._data(window,'events').resize

// result on the Chrome console: 
[Object]

我正在寻找一种方法来编写解决方法。

JIRA 问题

4

3 回答 3

2

You could use $._data() which is not a method publicly supported:

$(window).on('load',function() {
    if(!$._data(window,'events').resize)
        alert('none resize bound');
});

In older jquery version it was: $.data()

于 2013-08-04T18:06:49.723 回答
1

我在我的项目中使用的是

 $(window).unbind('resize').bind('resize',function(){
//code here
});

它将删除所有以前绑定(注册)的处理程序以调整大小事件并将这个新函数注册为处理程序。仅当您要附加单个事件处理程序时,此方法才有用。

于 2013-08-04T18:17:38.463 回答
0

感谢所有的回答和评论。正如建议的那样,我找到了问题的根源并为此写了一个解决方法,包括打开一个问题。

window.RichFaces.ui.ExtendedDataTable.prototype.deActivateResizeListener = function() { 
   if (this.resizeEventName != undefined) { 
       $(window).off(this.resizeEventName); 
   } 
};

我接受了烤的答案,因为它确实有助于找到解决方法,如果有办法找出是否附加了事件处理程序,他的回答回答了我的问题。

于 2013-08-04T21:47:13.477 回答