2014-03-24 27 views
0

我正在写一个javascript函数,它可以创建一个iframe和一个定位框架的表单。表单应在卸载页面之前提交表单。该代码适用于除Firefox之外的所有浏览器。表单提交onbeforeunload在Firefox

function unloadPage(message) { 
    actionUrl = "https://test.testpage.com/log/logwatch.lw" 
    var iframe = $('<iframe id="pageLogFrame" name="pageLogFrame" style="display:none;"></iframe>'); 
    var form = $('<form id="pageLogForm" target="pageLogFrame" method="post"></form>'); 
    $('body').append(iframe); 
    $('body').append(form); 
    form.attr('action',actionUrl); 
    var input = $('<input type="hidden" name="pageLog" />'); 
    form.append(input); 
    input.val(message); 
    form.submit(); 
}; 

window.onbeforeunload = function(){ 
    var message = "sampleMessage"; 
    unloadPage(message); 
}; 

有没有人有解决方案或想法如何使这项工作在Firerox?谢谢!

+2

在'unload'事件不能可靠地做任何事情,与网络相关的(或更一般的任何异步)。 –

回答

0

Firefox要求您指定一个void返回值。

该函数应该为Event对象的returnValue属性指定一个字符串值并返回相同的字符串。

摘自:https://developer.mozilla.org/en-US/docs/Web/API/Window.onbeforeunload

window.onbeforeunload = function(e) { 
    return 'Dialog text here.'; 
}; 
+0

感谢您花时间回答,我知道这个解决方案。但是,也许我没有很好地解释我的问题,我需要在没有任何对话框或提示的情况下提交表单。我不需要通知用户卸载事件正在发生。我需要这是透明的。 – dimisko