0

我得到了 HTML 元素<form><iframe>使用 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>');

然后将一些数据放入<textarea>元素并提交:

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();
};

问题是data在 Gecko 和 IE 浏览器上以相同的方式合并和发送页面上的点击。但是当用户离开页面并且data设置form.submit()没有在 Gecko 浏览器上启动时,尽管 IE 会按照我的意愿进行操作。

例如,在同一页面上存在<a href="http://www.google.com">Google</a>用户点击页面任意位置后提交的链接。一旦用户完成此操作,data设置并需要提交到myURL.php,但事实并非如此。

更新:这是整个代码http://pastebin.com/DF3DVLpG。通过提到基于 Gecko 的浏览器,我想到了其他流行的浏览器,例如 Firefox、Opera、Chrome 和 Safari。抱歉误导。

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

4

2 回答 2

0

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

http://support.microsoft.com/kb/331869

在没有看到更多代码的情况下不确定这是否是您的确切问题。如果这是您的所有代码,那么很可能就是问题所在。

于 2010-10-28T14:12:24.940 回答
-1

我通过使用其他事件-onbeforunload让它工作。

于 2010-10-29T09:37:35.527 回答