These are chat archives for NodejsRUS/chat

6th
Aug 2016
Ваня Devium
@webdevium
Aug 06 2016 16:09
Привет ребят, кто подскажет: открываю страницу фантомом, жмакаю на кнопку, выскакивает классический alert(). Есть возможность его или закрыть, или обойти?
То, что он, как и prompt и confirm, блокирует потом - знаю.
Akimov Vladimir
@b2whats
Aug 06 2016 16:10
window.alert = function(msg){return false}
Ваня Devium
@webdevium
Aug 06 2016 16:10
переопределить на странице?
Akimov Vladimir
@b2whats
Aug 06 2016 16:10
можно его не открывтаь
Ваня Devium
@webdevium
Aug 06 2016 16:11
я пытался переопределить функцию, которая по click на кнопке его вызывает, - не помогло. Функция не переопределяется.
Либо я дурак, либо переопределяется только в браузере.
Akimov Vladimir
@b2whats
Aug 06 2016 16:12
весь алерт переопределить
что бы он вообще не открывался
он тебе заблокирует выполнение жс, ты его програмно не закроешь
Ваня Devium
@webdevium
Aug 06 2016 16:12
То, что он, как и prompt и confirm, блокирует потом - знаю.
писал выше :)
Спасибо и на том, сейчас попробую.
Akimov Vladimir
@b2whats
Aug 06 2016 16:13
так если ты знаешь то зачем спрашивал :)
Ваня Devium
@webdevium
Aug 06 2016 16:14
Спрашивал потому, что не догадался сам алерт переопределить, а пытался функцию клика изменить, а оно не работает...
Akimov Vladimir
@b2whats
Aug 06 2016 16:14
функция клика вызывает какую то другую функцию ? тогда эту другую функцию можно переопределить
Ваня Devium
@webdevium
Aug 06 2016 16:15
А вот и нет, лично у меня точно не переопределяется((
Либо руки не с плеч растут, и голова как у Грэма с мемов...
Akimov Vladimir
@b2whats
Aug 06 2016 16:16
значит в каком то другом месте переопределить пытаешься

function a() {console.log(1)}
function a() {console.log(2)}

a() //2

Ваня Devium
@webdevium
Aug 06 2016 16:16
в evaluate, где же еще переопределять то...
Akimov Vladimir
@b2whats
Aug 06 2016 16:18
область видммости другая, я не знаю и гадать можно долго не видя кода, сделай минимальны йпример на фидле
там где нехорошее слово, ибо достала
Akimov Vladimir
@b2whats
Aug 06 2016 16:23
надо было написать минимально работающий пример
покажи как ты там переопределять ее пытаешься
Ваня Devium
@webdevium
Aug 06 2016 16:23
так вот эта функция уже есть на странице, а я ее заново определяю в evaluate, но уже без alert
Akimov Vladimir
@b2whats
Aug 06 2016 16:24
я не понимаю
как ты анонимную функцию переопределить собрался ?
Ваня Devium
@webdevium
Aug 06 2016 16:25
а чего она анонимная?
function vasya() {} не анонимная
Akimov Vladimir
@b2whats
Aug 06 2016 16:26
а какая ? .evaluate(function (KEY, options, done) {
Ваня Devium
@webdevium
Aug 06 2016 16:26
не, не, я GAVNO переопределяю
у меня .evaluate(function (KEY, options, done) {} больше 3000 строк
Akimov Vladimir
@b2whats
Aug 06 2016 16:27
у тебя функция которая написана в evaluate создает свою область видимости
функцию говно ты можешь переопределить находясь только в ней
Ваня Devium
@webdevium
Aug 06 2016 16:28
а через window к ней никак?
Akimov Vladimir
@b2whats
Aug 06 2016 16:29
своя область видимости - https://learn.javascript.ru/functions-closures
Ваня Devium
@webdevium
Aug 06 2016 16:29
убедил, спасибо.
значит только alert переопределять?
Akimov Vladimir
@b2whats
Aug 06 2016 16:29
ты можешь сделать експрешн функции в переменную и вызывать ее из window
window.a = () => {}
Ваня Devium
@webdevium
Aug 06 2016 16:30
принято. Буду пробовать.
Akimov Vladimir
@b2whats
Aug 06 2016 16:31
но помни что функция созданная таким способом создастся только когда выполнится присвоение
Ваня Devium
@webdevium
Aug 06 2016 16:31
агась, пробую
Ваня Devium
@webdevium
Aug 06 2016 16:42

написал в evaluate

window.alert = function (msg) {
        $('[name=name]').addClass('error');
 }

и все сломалось

руки не из плеч?
Ваня Devium
@webdevium
Aug 06 2016 16:58
Все гениальное просто: функция на настоящей странице навешивалась на аттрибут элемента onblur. Я аттрибут прибил, и моя функция начала отрабатывать без проблем. Алерт уже не мешает. Спасибо за помощь @b2whats