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 に答える