3

私はずっと前にこのようなことをしました。アラートをキャプチャし、デフォルトのブラウザベースのアラートボックスがポップアップしないようにして、ある種のモーダルに置き換えました。しかし、私がそれを行ってから非常に長い間、私はそれをどのように行ったか私の古いコードからの参照を見つけることができず、現在グーグルを介して関連するものを見つけることができません。だから..私はここの誰かがこれで私を助け、私を助けることができることを望んでいます。私はまだ何も試していませんので、何を試したかという質問は避けてください。ぼんやりとした記憶にあるものに似たコードのスニペットに対して、最後の1時間ほどをグーグルで検索する以外は、手ぶらで出てきました。これは質の悪い質問のようなものですが、同時に、他の人も答えを知っていただければ幸いです。

私の場合は、alert()ボックスをトリガーするイベントをキャプチャし、その中にあったメッセージを別の通知のバリエーションに渡すだけです。現在、私は他のカップルとappmobiでいくつかの作業を行っており、alert()それをキャプチャして使用したいと思います

AppMobi.notification.alert(message,title,buttontext);のデフォルトアクションとしてalert()

4

3 に答える 3

11

アラートメソッドを上書きするだけです。

window.alert = function(msg) {
   // whatever you want to do with 'msg' here
};

これには、通常のブロッキング動作がないことに注意してくださいalert

于 2012-09-11T06:39:20.470 に答える
1
window.alert = function(message,title,buttontext) {
   AppMobi.notification.alert(message,title,buttontext); 
};
于 2012-09-11T06:41:18.843 に答える
1

他の人が指摘しているように、それはオーバーライドすることができます-3つの引数をAppMobi.notification.alert期待していることを覚えておいてください。フォールバックのデフォルトが設定されていても驚かないでしょうが、申し訳ありませんが安全です。

//alert is a native code function that we may need elsewhere
window.legacyAlert = window.alert;
window.alert = function(_msg) {
  AppMobi.notification.alert(_msg, 'Alert', 'OK');//or whatever
};

これにより、メソッドがグローバルにオーバーライドされます。または、クロージャを使用して、コードの一部でのみオーバーライドする必要がある場合があります。

alert('this is a vanilla js alert');
(function(alert) {
    alert('this alert has been overridden');
})(AppMobi.notification.alert);
alert('this is another vanilla js alert');

いじる

于 2012-09-11T08:43:33.133 に答える