2015-04-23 2 views
-3

У меня есть игра, которая убегает от предупреждений, подтверждает и предлагает запустить интерфейс. Я понял, что это не лучший способ сделать это, и поскольку я понятия не имею, как использовать jQuery, и у меня нет времени, чтобы пройти и отредактировать все это, я мог бы просто преобразовать его.Преобразовать оповещение, пригласить и подтвердить диалог UI

Я нашел один сценарий ниже, который преобразует предупреждения для меня, но как мне сделать то же самое для подсказок и подтверждает?

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> 
+0

Вы уже сами пробовали? например, сменить window.alert на window.confirm? было бы полезно узнать, какие варианты вы исчерпали. – MuppetGrinder

+1

Обратите внимание на то, что window.alert и window.confirm блокируются, а вашего переопределения их не будет. – syymza

+0

Я бы предложил не переопределять window.alert подтверждение и запрос, потому что вы не можете создать функцию, которая будет работать точно так же с помощью специального диалога. –

ответ

0

Для подтверждения должно быть в значительной степени то же самое. Попробуйте этот код:

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; 
     } 
    }); 
}; 
0

Я судимое это некоторое время назад и только что загрузили в GitHub gist.

Но ЗАМЕЧАНИЕ: Даже реализация alert() не полностью эквивалентна реализации native window.alert(), поскольку вы не можете остановить внутренний цикл JavaScript (см. Комментарии в моем коде).

Это может привести к серьезным проблемам с использованием заметок alert() и сделать невозможным реализацию confirm() и prompt() (я думаю, полностью).

EDIT: решение Константина Динев не будет работать, потому что его подтверждение() функция будет выходить сразу (возвращение неопределенным) так же, как ваша реализация предупреждения() (извините, я не могу комментировать свой пост сразу).

... Я думал об этом ранее (но еще не реализован), что лучшим решением является НЕ переопределить alert(), confirm() и prompt() и заменить его другой реализацией, в обратных вызовах (что подразумевает, что вы должны немного изменить свой код), которые реализуют его с помощью jquery и, при необходимости, отката (если хотите) для реализации на основе оконных диалогов, если jquery недоступен.

Смежные вопросы