繁体   English   中英

JS代码使IE9和Safari冻结,在Opera中不起作用?

[英]JS code makes IE9 and Safari freezing and does not work in Opera?

我不知道为什么,但这段代码使IE9和Safari崩溃,并且在Opera中根本不起作用。

$('#contentPage').on('DOMSubtreeModified', function(){
    if($(".iframey[date-current]").length){
    $(".iframey:not(.hidden)").prevUntil("iframe").addClass('smaller');
}});

如何使此代码适用于所有浏览器?

- -编辑 - -

jsfiddle中的代码

http://jsfiddle.net/rzP5S/

在chrome和firefox工作炉排

您正在修改dom修改的事件处理程序中的dom,您应该检查修改是否是由处理程序中的代码引起的,以防止无限循环。

警告! DOMSubtreeModified事件类型在本规范中定义,以供参考和完整,但此规范不建议使用此事件类型。

http://www.w3.org/TR/DOM-Level-3-Events/#event-type-DOMSubtreeModified

@Musa说的是正确的。 有一个无限循环。 你有什么理由需要在DOMSubtreeModified处理它吗? 你不能只是在点击事件中完成工作吗? 这似乎表现得一样:

$(".onePost").live("click", function() {

    $(".onePost").removeClass('smaller');

    $("iframe")
        .addClass('hidden')
        .removeAttr('src')
        .removeAttr('date-current');

    $(this).nextAll("iframe:eq(0)")
        .removeClass('hidden')
        .removeAttr('style')
        .attr({src: $(this).data('href')})
        .attr('date-current', 'here');

    if($(".iframey[date-current]").length){
        $(".iframey:not(.hidden)").prevUntil(".iframey").addClass('smaller');
    }
});

http://jsfiddle.net/rPPSj/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM