グローバル化できるバージョンですべてのJavaScriptの確認と警告機能を更新する必要があるグローバリゼーションプロジェクトに取り組んでいます。私はここで主題について質問されたいくつかの質問を読んでいたが、コールバック機能を使っていた解決策は見つけられなかった。これらの関数を新しく定義されたダイアログに置き換えても、スクリプトの実行は停止しません。コールバック関数は必要ですが、実装にはいくつか問題があります。以下はjQueryとコールバック関数を使用したjavascriptのアラート/確認の無効化
今起こっていただきました私は
PromptForExit = function() {
$(document).ready(function() {
//new confirm
$dialog_confirm = $('<div></div>').dialog({
resizable: false,
height: 100,
modal: true,
autoOpen: false,
buttons: {
"Ok - Configurable": function() {
$(this).dialog("close");
return true;
},
"Cancel - Configurable": function() {
$(this).dialog("close");
return false;
}
}
});
//new alert
$dialog_alert = $('<div></div>').dialog({
resizable: false,
height: 140,
modal: true,
autoOpen: false,
buttons: {
okVal: function() {
$(this).dialog("close");
}
}
});
//override alert
window.alert = function (msg) {
$dialog_alert.html(msg).dialog('open');
};
//override confirm
window.confirm = function (msg) {
$dialog_confirm.html(msg).dialog('open');
};
});
//alert testing
var anAlert = alert("jQuery alert");
alert(EmptyFunc(anAlert));
anAlert = alert("jQuery alert2");
alert(EmptyFunc(anAlert));
//confirm testing
var resp = confirm("jQuery confirm");
confirm(TempFunc(resp));
resp = confirm("jQuery confirm 2");
confirm(TempFunc(resp));
};
TempFunc = function (response) {
if (response) {
//take action if user choose OK
}
else {
//different flow if they choose cancel
}
};
EmptyFunc = function (anAlert) {
return true;
};
に取り組んできました/ javascriptのブロックであるjQueryのコードは、非常に最後の「jQueryの2を確認する」、示されていないが、他のいずれますされています。私はコールバック関数が正しく設定されていないので、これが起こっていると思いますが、anAlertとrespは確認やアラートに設定した後でも常に定義されていないことに気付きました。ヘルプをよろしくお願いいたします。
* real * "alert()"と "confirm()"の動作を複製することができないことに注意してください。ブラウザは、ユーザによる置換が返答されるのを「待機」しません。したがって、 "alert()"と "confirm()"が正常に動作することを期待するコードは壊れてしまいます。 – Pointy
[アラートを上書きしてJavascriptで確認する](http://stackoverflow.com/questions/5560367/override-alert-and-confirm-in-javascript)の回答を参照してください。 @Pointyが述べたように、ブロック動作は複製されません。 –