1

私は魔法をかけて、すべてのプラットフォームの JavaScript アラートを jquery ダイアログに変えようとしていました。次のスクリプトに従いました。

<div id="overrideAlert"></div>

<script>
window.alert = function(message) {
    $('#overrideAlert').text(message).dialog({
        modal:true,
        title:'Message',
        buttons: {
            'OK':function(){
                $(this).dialog('close');
            }
        }
    });
};
</script>

しかし、運がありません。

これに対する明確な解決策はありますか?ありがとう、

4

4 に答える 4

8

div代わりにダイナミックを好む

$('<div />').text(message).dialog({
    modal:true,
    title:'Message',
    buttons: {
        'OK':function(){
            $(this).dialog('close');
        }
    },
    close:function(){ $(this).dialog('destroy').remove(); }
});

デモ。

于 2013-05-01T03:06:09.637 に答える
3

それだけで機能します。

jsfiddle demoで確認してください。

注: div 要素は dom で準備ができていないため、のタグalert('foo');内で直接呼び出すことはできません。<head><script>

于 2013-05-01T03:01:56.950 に答える
0

コードは問題ないように見えますが、jquery および jquery-ui ライブラリをページに追加していることを確認してください。

デモ:プランカー

于 2013-05-01T04:39:23.193 に答える
-1

アラートが自動的に送信される前にページを送信している場合。そこに正常に保存されたメッセージもありましたが、「OK」を求めていませんでした。私はalert.anyの提案をオーバーライドしました。window.alert = function(メッセージ、フォールバック){

$(document.createElement('div')).attr({title: 'Alert', 'class': 'alert'}).html(message).dialog({
  buttons: {OK: function(){$(this).dialog('close'); callback()}},
  autoOpen: true,
  close:function(){$(this).remove();},
  draggable: true,
  modal: false,
  resizable: false,
  height:'auto',
  width: 'auto'
});
于 2014-08-26T06:06:15.687 に答える