Я новичок в программировании на javascript, поэтому, пожалуйста, несите меня для основного вопроса :) Если случайно один из JavaScript-кода с открытым исходным кодом изменяет собственный метод window.scrollTo(), как я могу убедиться, что при вызове scrollTo для HTML-элемент, он всегда будет работать, а не поднимать JS-ошибку вместо этого?Что произойдет, если я переопределю метод window.scrollTo?
ответ
Вы можете восстановить версию 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, а не текущего экземпляра.
Делает смысл. хотя еще одно решение, не уверенное, если это правильно, но, пожалуйста, дайте мне знать, каковы потенциальные хазары при вызове того же: '' '' Window.prototype.scrollTo.call (window, someParam); '' '' – rishabh
Спасибо, @rishabh, что тоже работает. Однако я обновил свой ответ еще более простым решением. – nullability
- 1. Что произойдет, если я случайно переопределю частные API Apple?
- 2. Что произойдет, если я напишу свой собственный метод в Servlet?
- 3. Что произойдет, если я не реализую частичный метод?
- 4. Что произойдет, если я вызову метод run() самостоятельно?
- 5. Что произойдет, если я прекращу тесты jUnit
- 6. Что произойдет, если я не вызываю dispose()?
- 7. Что произойдет, если action = ""?
- 8. Что произойдет, если я не вызову session_start()?
- 9. Что произойдет, если я укоротить MSmerge_current_partition_mappings
- 10. Что произойдет, если я не очищу строку?
- 11. Что произойдет, если я отменяю git?
- 12. Что произойдет, если я забуду закрыть сканирование?
- 13. Что произойдет, если я не удалю?
- 14. Что произойдет, если я переустановить после нажатия?
- 15. Что произойдет, если я верну указатель?
- 16. Что произойдет, если я это сделаю? (Запирание)
- 17. Что произойдет, если ViewState Disabled
- 18. Что произойдет, если отключить таймер?
- 19. Что произойдет, если * .exe.config удален?
- 20. Что произойдет, если NSURLCache заполнен?
- 21. Что произойдет, если php.ini отсутствует?
- 22. Что произойдет, если stdin заполняется?
- 23. Что произойдет, если клиент отключится?
- 24. Что произойдет, если я поместил con.setAutocommit (true) более одного?
- 25. Что произойдет, если я очистил контейнерный вид фрагмента
- 26. WCF: Что произойдет, если канал установлен, но метод не вызван?
- 27. Что произойдет, если мы сразу вызовите метод run?
- 28. Что произойдет, если файлы AIDL не совпадут?
- 29. Что произойдет, если я изменю объект, находящийся внутри HashSet?
- 30. Что произойдет, если __init __() отсутствует в подклассе?
Я думаю, вам стоит попробовать сначала –
Да, я попытался, была поднята ошибка JS. Поэтому не знаю, как я могу всегда гарантировать, что метод окна по умолчанию должен всегда вызываться :) – rishabh