我找到了使用Javascript创建HTML元素<form>
和<iframe>
的页面:
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代码,浏览器行为或其他什么?
答案 0 :(得分:0)
此MS文章可以帮助解决您的问题。
http://support.microsoft.com/kb/331869
如果没有看到更多代码,不确定这是否是您的确切问题。如果这是你的所有代码,很可能就是问题。
答案 1 :(得分:-1)
我通过使用其他活动 - onbeforunload来实现它。