Internet explorer 退出时未触发Javascript submit()事件(卸载事件)

Internet explorer 退出时未触发Javascript submit()事件(卸载事件),internet-explorer,firefox,javascript-events,gecko,onunload,Internet Explorer,Firefox,Javascript Events,Gecko,Onunload,我得到了一个页面,其中HTML元素和是用Javascript自动创建的: document.write('<iframe id="myIframe" name="myIframe" src="about:blank" style="display:none;"></iframe>'); document.write('<form id="myForm" name="myForm" method="post" target="myIframe" action="myU

我得到了一个页面,其中HTML元素
是用Javascript自动创建的:

document.write('<iframe id="myIframe" name="myIframe" src="about:blank" style="display:none;"></iframe>');
document.write('<form id="myForm" name="myForm" method="post" target="myIframe" action="myURL.php" style="display:none;">');
document.write('<textarea name="d"></textarea>');
document.write('</form>');
问题在于,在Gecko和IE浏览器上,点击页面上的
数据
会以相同的方式组合并发送。但是,当用户离开页面并且设置了
数据
时,Gecko浏览器不会启动
表单。submit()
,尽管IE按照我的要求执行

例如,在同一页面上存在链接
,用户在单击页面上的任何位置后提交该链接。一旦用户这样做,
数据
被设置,需要提交到
myURL.php
,但它不是

更新:这是全部代码。 提到基于Gecko的浏览器,我想到了其他流行的浏览器,如Firefox、Opera、Chrome和Safari。对不起,我误导了你


可能是什么问题:Javascript代码、浏览器行为或其他问题?

这篇MS文章可以帮助解决您的问题


如果没有看到更多的代码,就不确定这是否是您的问题。如果这是您的全部代码,很可能就是问题所在。

我是通过使用其他事件来实现的。

这篇MS文章是关于IE6问题的,但我的代码在IE上确实有效,尽管我没有特别检查IE6 SP1。然而,更重要的是,为什么它不能在其他浏览器上工作,如Firefox、Opera、Chrome和Safari。
var data = '';

function myOnClick()
{
    // combine data
    data += 'click|';

    if (data.length > 17)
    {
        // initiate after 3rd click
        mySubmit();
    }
};
function myOnUnload()
{
    if (data.length > 0)
    {
        mySubmit();
    }
};
function mySubmit()
{
    var form     = document.getElementById('myForm');
    var textarea = form.getElementsByTagName('textarea')[0];

    // set data
    textarea.innerHTML = data;
    // send data
    form.submit();

    // set var to default value
    data = '';
};

if (document.addEventListener)
{
    // Gecko browsers
    document.addEventListener('mousedown', myOnClick, false);
}
else if (document.attachEvent)
{
    // IE browsers
    document.attachEvent('onmousedown', myOnClick, false);
}

window.onunload = function()
{
    myOnUnload();
};