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