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