32

JavaScriptalert()confirm()ダイアログ ボックスを利用する Web アプリを開発しています。

Chrome でこのチェックボックスが表示されないようにするにはどうすればよいですか?

変更できる設定はありますか?

ソース コードを変更できることはわかっていますが、Chrome が引き続き自動更新できるようにしたいと考えています。

アプリは Chrome でのみ実行されるため、他のブラウザーについて心配する必要はありません。

アプリを実行する (Windows) マシンへの管理者アクセス権があります。

4

6 に答える 6

42

できません。これは、サイトが何百ものアラートを表示して離れないようにするためのブラウザ機能です。

ただし、 jQuery UI Dialogのようなモーダル ポップアップを調べることはできます。これらは、カスタム ダイアログを表示する JavaScript アラート ボックスです。デフォルトの機能を使用しないため、発生しalert()ている問題を完全に回避できます。

多くのメッセージ ボックスと確認メッセージがあるアプリでは、既定のアラートと確認メッセージの代わりにカスタム ダイアログを使用すると、ユーザー エクスペリエンスが大幅に向上することがわかりました。

于 2012-07-30T21:25:48.740 に答える
10

私たちの管理下にない複数のユーザーを持つWebアプリがあるため、これが私が最終的に行ったことです...(@DannyBeckettこれはあなたの質問に対する正確な答えではないことを知っていますが、見ている人々あなたの質問はこれによって助けられるかもしれません.) 少なくとも、彼らがダイアログを見ていないかどうかを検出することができます. 表示する時間や実際に表示しているものなど、変更する可能性が最も高いものはほとんどありません。これは、その小さなチェックボックスをクリックできたことをユーザーに通知するだけであることを覚えておいてください。

window.nativeAlert = window.alert;
window.alert = function (message) {
    var timeBefore = new Date();
    var confirmBool = nativeAlert(message);
    var timeAfter = new Date();
    if ((timeAfter - timeBefore) < 350) {
        MySpecialDialog("You have alerts turned off");
    }
}

window.nativeConfirm = window.confirm;
window.confirm = function (message) {
    var timeBefore = new Date();
    var confirmBool = nativeConfirm(message);
    var timeAfter = new Date();
    if ((timeAfter - timeBefore) < 350) {
        MySpecialDialog("You have confirms turned off");
    }
    return confirmBool;
}

明らかに、時間を 3.5 ミリ秒に設定しました。しかし、いくつかのテストの後、約 5 ミリ秒以上でダイアログをクリックまたは閉じることができました。

于 2014-05-16T14:12:21.290 に答える
7

誰もが倫理的にこれに反対していることは知っていますが、これが望まれる場合には実際的な冗談を言う理由があることも理解しています. Chrome は、アラート メッセージ間の間隔を 1 秒にすることを強制することで、これに対して確固たる姿勢をとったと思います。これにより、迷惑ないたずらサイトで立ち往生している場合に、訪問者がページを閉じたり更新したりするのに十分な時間が与えられます.

ですから、あなたの質問に答えるには、すべてタイミングの問題です。1 秒に 1 回以上アラートを出すと、Chrome はそのチェックボックスを作成します。回避策の簡単な例を次に示します。

var countdown = 99;
function annoy(){
    if(countdown>0){
        alert(countdown+" bottles of beer on the wall, "+countdown+" bottles of beer! Take one down, pass it around, "+(countdown-1)+" bottles of beer on the wall!");
        countdown--;

        // Time must always be 1000 milliseconds, 999 or less causes the checkbox to appear
        setTimeout(function(){
            annoy();
        }, 1000);
    }
}

// Don't alert right away or Chrome will catch you
setTimeout(function(){
    annoy();
}, 1000);
于 2014-05-07T16:26:10.650 に答える
3

そのチェックボックスを削除しようとするのではなく、jquery-confirmを使用することをお勧めします。

$.confirm({
    title: 'Confirm!',
    content: 'Are you sure you want to refund invoice ?',
    confirm: function(){
       //do something 
    },
    cancel: function(){
       //do something
    }
}); 
于 2016-11-01T17:39:51.113 に答える
-1

You should let the user do that if they want (and you can't stop them anyway).

Your problem is that you need to know that they have and then assume that they mean OK, not cancel. Replace confirm(x) with myConfirm(x):

function myConfirm(message) {
    var start = Number(new Date());
    var result = confirm(message);
    var end = Number(new Date());
    return (end<(start+10)||result==true);
}
于 2014-03-23T09:00:09.770 に答える
-27
function alertWithoutNotice(message){
    setTimeout(function(){
        alert(message);
    }, 1000);
}
于 2013-02-07T12:28:40.597 に答える