3

このアプリケーションには、ユーザーが F5 を使用して Web ページを更新することを許可しないという要件があります。

ここでソリューションを実装しましたが、ページの iframe 内では機能しないことがわかりました。

iframe は、telek radeditor コントロールから生成されます。

ラジディターを含むページ内で次のことを試しました。

$(function () {
    $('#<%=RadEditor1.ClientID %>_contentIframe html').bind('keydown', function () {
        if (window.event && window.event.keyCode == 116) {
            window.event.cancelBubble = true;
            window.event.returnValue = false;
            window.event.keyCode = 0;
            window.status = "F5 is disabled on all popups";
            return false;
        }
    });
});

しかし、それは機能していません。

私が見逃しているiframeについて何か特別なことはありますか?

4

3 に答える 3

5

ユーザーがページで作業しているときにデータが失われるのを防ぎたいことを知っているので、別の解決策を提案します。彼らがページを離れるときにただフックして、彼らがそれをするつもりであったかどうか見るように促してみませんか?

ユーザーがWebページを離れたときを検出する最良の方法は?

Gmailは、メッセージがまだ保存/送信されていない場合にこの方法を使用します。これにより、多くのシナリオをカバーし、ユーザーを満足させ、誰かが望む場合でもF5を機能させることができます。

于 2012-04-25T17:06:37.897 に答える
2

この方法は一貫して機能します。

$(function () {
    function addF5Handler(){
        el = $('body', $('#myframe').contents());
        if(el.length != 1) {
            setTimeout(addF5Handler, 100);
            return;
        }
        $($('#myframe').get(0).contentWindow.document).keydown(function () {
            var myWindow = $('#myframe').get(0).contentWindow;
            if (myWindow.event && myWindow.event.keyCode == 116) {
                myWindow.event.cancelBubble = true;
                myWindow.event.returnValue = false;
                myWindow.event.keyCode = 0;
                myWindow.status = "F5 is disabled on all popups";
                return false;
            }
        });
    }
    addF5Handler();
});
于 2012-04-25T21:29:04.470 に答える
1

あなたが持っている唯一のオプションはこれだと思います:

$(window).on('beforeunload', function () {
  return 'Leave?';
});

これを iFrame ページ内に配置します。

于 2012-04-25T17:31:56.303 に答える