添加另一个脚本时,onbeforeunload无法正常工作

时间:2012-09-11 11:45:10

标签: javascript jquery onbeforeunload

我有一小段代码来检查表格字段是否在离开页面之前有任何变化

$(document).ready(function(){

    var form = $('#submit-form'),
        original = form.serialize();
    form.submit(function(){
        window.onbeforeunload = null;
    });

    window.onbeforeunload = function(){

        if (form.serialize() != original)
            return 'Changes detected';
    };
});

工作得很好。然后我将tag-it集成到我的页面中,上面的脚本不再起作用了。如果我用tag-it.js注释掉行,它会再次起作用。当谈到JavaScript时我很无知,我不知道它为什么不起作用。

这是tag-it.js脚本的链接(btw非常好)

https://github.com/aehlke/tag-it/blob/master/js/tag-it.js

编辑:

通过不工作我的意思是如果我编辑表单并且想要离开页面,则没有任何弹出窗口。

如果我不包含tag-it.js文件(上面链接),一切正常,当我编辑表单并尝试离开页面时,我会弹出窗口。

1 个答案:

答案 0 :(得分:0)

你应该检查是否已经定义了window.onbeforeunload,如果是,那么你可以

如下所示调用旧版本:  //第一个文件

 window.onbeforeunload = function(){

            if (form.serialize() != original)
                return 'Changes detected';
        };
    // other file
    var olderonbeforeunload = window.onbeforeunload;

    window.onbeforeunload = function(){
           if(typeof olderonbeforeunload == 'function'){
           olderonbeforeunload.apply(arguments);
         }
           // new code
        };