-1

この機能に問題があります。説明します-ユーザーがブラウザを閉じたら関数を実行する必要があります。この関数はJavaScriptで記述されています-saveCookieScriptPrefOnLogOut()。

私はこの解決策を持っています(私はStackOverFlowからの情報を使用してこれを書きました):

var inFormOrLink;
$('a').live('click', function() { inFormOrLink = true; });
$('form').bind('submit', function() { inFormOrLink = true; });

$(window).bind('beforeunload', function(eventObject) {
var returnValue = undefined;
if (! inFormOrLink) {
    saveCookieScriptPrefOnLogOut();
}
saveCookieScriptPrefOnLogOut();
return true;
});

このソリューションの問題は次のとおりです。すべてのブラウザに「本当に閉じますか?」という質問のウィンドウが表示されます。

この情報/ウィンドウを非表示にする必要があります。2番目の問題(それほど重要ではありませんが、それでも)-リンクまたはフォーム送信をクリックすると、FFとIEがこの機能を実行します。リンクとフォーム送信を無視する必要があります。

ソリューションはクロスブラウザソリューションである必要があります(IE、Chrome、WindowsのFF。最も重要なのはIEです)。PHPとjavascriptを使用できます。

これらの問題をどのように解決するかについて、何か答えをいただけますか?

4

1 に答える 1

1

これを試して:

var inFormOrLink = false;

$('a').live('click', function() { inFormOrLink = true; });
$('form').live('submit', function() { inFormOrLink = true; });

$(window).bind('beforeunload', function() {
    if( !inFormOrLink ) {
        saveCookieScriptPrefOnLogOut();
    }
});

undefinedイベントハンドラーから戻ると(returnステートメントが暗黙的に返さundefinedれることはありません)、ダイアログは表示されません。また、にsaveCookieScriptPrefOnLogOut関係なく呼び出しinFormOrLinkました。

于 2012-10-25T10:23:23.597 に答える