2010-06-03 4 views

ответ

-5

Спасибо. Это помогло. Тем не менее, я понял, что мне нужно сделать это, чтобы заставить его работать

location.href="javascript: window.alert = function(x) {console.log(x)};" 

, если я хотел, чтобы удалить оповещения и подтверждает, что я могу сделать

location.href="javascript: window.alert = function(x) {console.log(x)}; window.confirm = function(){return true;};"; 
+0

Как вы получаете что-нибудь в этом контексте «javascript:»? Когда я пытаюсь это сделать, я не могу назвать какие-либо из моих функций. –

+0

Не уверен, извините. Это может быть устаревшим ответом. Интересно, почему у него так много голосов. Я думаю, может быть, проблема в том, что @MrGlass прокомментировал ответ на предыдущий вопрос. –

11

Да, вы можете, alert() - это всего лишь метод JavaScript, вы можете переопределить его функциональность.

window.alert = function alert(msg) { 
    console.log('Hidden Alert ' + msg); 
}; 

Не забудьте запустить этот скрипт контента в документе documentstart в манифесте с помощью модификатора скрипта содержимого манифеста run_at.

Я считаю, что есть расширение, которое просто делает это. Разработчик называет его Nice Alert. https://chrome.google.com/extensions/detail/ehnbelnegmgdnjaghgomaakjcmpcakhk

+1

Этот метод больше не работает = javascript в скрипте содержимого изолирован от главной страницы. Это изменяет функцию оповещения в скрипте содержимого, но не на главной странице. – MrGlass

+1

Это правда @MrGlass. См. Мой ответ, чтобы узнать, как это можно обойти. –

7

Как сказал @MrGlass, в настоящее время, Chrome Extensions запуска в отдельной среде, ограничивая доступ к фактическому объекту window и предоставляя дубликат, который действителен только для расширения.

Чтобы решить эту проблему, мы можем вставить элемент сценария непосредственно в документ. Таким образом, вы получаете доступ к среде документа и реальному объекту window.

Во-первых, позволяет создать функцию (я добавил «Confirm», а также, потому что некоторые были раздражает подтверждает меня так много):

var disablerFunction = function() { 

    window.alert = function alert(msg) { console.log('Hidden Alert ' + msg); }; 
    window.confirm = function confirm(msg) { 
     console.log("Hidden Confirm " + msg); 
     return true; /*simulates user clicking yes*/ 
    }; 

}; 

Теперь, что мы собираемся сделать, это преобразование, функция в текстовом сценарии и заключить его в скобки (чтобы избежать возможных конфликтов с действительными переменными в среде страницы):

var disablerCode = "(" + disablerFunction.toString() + ")();"; 

и, наконец, мы вводим элемент сценария, и немедленно удалить его:

var disablerScriptElement = document.createElement('script'); 
disablerScriptElement.textContent = disablerCode; 

document.documentElement.appendChild(disablerScriptElement); 
disablerScriptElement.parentNode.removeChild(disablerScriptElement); 
+0

Работает как шарм! – martinczerwi

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