如何检查是否设置了onresize方法?

时间:2013-08-04 17:59:42

标签: javascript jquery richfaces

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

我之前使用过:

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

由于另一个库中存在未知错误,因此不再调用onresize。执行上面的行后,它再次完美地工作。该方法被调用一次。如果我再次在Firebug控制台中执行该行,则会调用该方法两次。

我想写一个解决方法,一旦“重置”就设置onresize

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

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问题

3 个答案:

答案 0 :(得分:2)

您可以使用$._data(),这不是公开支持的方法:

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

在较旧的jquery版本中,它是:$.data()

答案 1 :(得分:1)

我在项目中使用的是

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

它将删除resize事件的所有先前绑定(已注册)处理程序,并将此新函数注册为处理程序。 只有当您想要附加单个事件处理程序时,此方法才有用。

答案 2 :(得分:0)

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

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

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