Мне интересно, можно ли изолировать JavaScript, работающий в браузере, для предотвращения доступа к функциям, которые обычно доступны для кода JavaScript, запущенного на странице HTML.
Например, предположим, что я хочу предоставить конечным пользователям JavaScript API, чтобы они могли определять обработчики событий, запускаемые при возникновении интересных событий, но я не хочу, чтобы эти пользователи получали доступ к свойствам и функциям объекта window
. Могу ли я это сделать?
В простейшем случае, допустим, я хочу запретить пользователям вызывать alert
. Я могу придумать несколько подходов:
- Переопределите
window.alert
глобально. Я не думаю, что это был бы правильный подход, потому что другой код, работающий на странице (то есть материал, не созданный пользователями в их обработчиках событий), может захотеть использоватьalert
. - Отправьте код обработчика события на сервер для обработки. Я не уверен, что отправка кода на сервер для обработки - правильный подход, потому что обработчики событий должны запускаться в контексте страницы.
Возможно, сработает решение, в котором сервер обрабатывает пользовательскую функцию, а затем генерирует обратный вызов для выполнения на клиенте? Даже если этот подход работает, есть ли более эффективные способы решения этой проблемы?