Internet explorer 退出时未触发Javascript submit()事件(卸载事件)
我得到了一个页面,其中HTML元素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
和
是用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();
};