【问题标题】:Convert alert, prompt and confirm to UI Dialog将警报、提示和确认转换为 UI Dialog
【发布时间】:2015-04-23 15:09:13
【问题描述】:

我有一个游戏,它运行警报、确认和提示运行界面。我意识到这不是最好的方法,而且由于我不知道如何使用 jQuery,而且我没有时间浏览和编辑整个东西,我可以转换它。

我在下面找到了一个可以为我转换警报的脚本,但是我如何对提示和确认执行相同的操作?

jQuery:

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

HTML:

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

【问题讨论】:

  • 您自己尝试过吗?例如将 window.alert 更改为 window.confirm ?很高兴知道您已经用尽了哪些选项
  • 注意window.alert和window.confirm是阻塞的,而你对它们的重新定义不会阻塞。
  • 我建议不要覆盖 window.alert 确认和提示,因为您不可能创建一个功能与自定义对话框相同的功能。

标签: javascript jquery alert prompt confirm


【解决方案1】:

我前段时间试过了,刚刚上传为GitHub gist

但请注意:即使您的 alert() 实现也不完全等同于本机 window.alert() 实现,因为您无法停止 javascript 内部循环(请参阅我的代码中的 cmets)。

这可能会导致使用 alert() 替换的严重问题,并使 confirm() 和 prompt() 实现(我认为完全)不可能。

编辑: Konstantin Diev 解决方案将不起作用,因为他的 confirm() 函数将立即退出(返回未定义),就像您的 alert() 实现一样(抱歉,我不能直接评论他的帖子) .

...我之前考虑过(但还没有实现),更好的解决方案不是重新定义 alert()、confirm() 和 prompt() 并用其他实现替换它,基于回调(这意味着您应该稍微修改您的代码),它使用 jquery 实现它,并且如果 jquery 不可用,可以选择故障回复(如果需要)到基于窗口对话框的实现。

【讨论】:

    【解决方案2】:

    为了确认它应该几乎相同。试试这个代码:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多