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 コード、ブラウザの動作、またはその他の何か?