2013-10-25 3 views
0

Я новичок в программировании на javascript, поэтому, пожалуйста, несите меня для основного вопроса :) Если случайно один из JavaScript-кода с открытым исходным кодом изменяет собственный метод window.scrollTo(), как я могу убедиться, что при вызове scrollTo для HTML-элемент, он всегда будет работать, а не поднимать JS-ошибку вместо этого?Что произойдет, если я переопределю метод window.scrollTo?

+2

Я думаю, вам стоит попробовать сначала –

+0

Да, я попытался, была поднята ошибка JS. Поэтому не знаю, как я могу всегда гарантировать, что метод окна по умолчанию должен всегда вызываться :) – rishabh

ответ

1

Вы можете восстановить версию scrollTo по умолчанию, просто удалив модификацию.

delete window.scrollTo; 

Это удалит измененный window.scrollTo и заменить его версии по умолчанию функции от объекта Window прототипа.

Однако, если вам нужна модифицированная версия window.scrollTo, вы можете сделать ее копию и использовать копию.

Выполните следующий код перед загрузкой библиотеки:

window.scrollToProper = window.scrollTo; 

С тех пор вы можете вызвать scrollToProper() использовать функцию по умолчанию, даже если window.scrollTo модифицируется.

В качестве альтернативы вы можете вызвать функцию по умолчанию scrollTo непосредственно из прототипа Window. (. Спасибо Rishabh) Синтаксис выглядит следующим образом:

Window.prototype.scrollTo.call(window, x, y); 

Примечание капитализация окна, потому что вы имеете в виду объект Window, а не текущего экземпляра.

+0

Делает смысл. хотя еще одно решение, не уверенное, если это правильно, но, пожалуйста, дайте мне знать, каковы потенциальные хазары при вызове того же: '' '' Window.prototype.scrollTo.call (window, someParam); '' '' – rishabh

+0

Спасибо, @rishabh, что тоже работает. Однако я обновил свой ответ еще более простым решением. – nullability

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