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