Встраивание Javascript в Javascript (я серьезно)? - PullRequest
2 голосов
/ 26 августа 2011

Я работаю над проектом, в котором игроки могут размещать графические объекты на веб-сайте и анимировать их с помощью скриптов. Поскольку сценарии будут доступны всем участвующим клиентам, среда сценариев должна быть изолированной, чтобы пользователи не могли в конечном итоге уничтожить взаимодействие с другими пользователями для всех частей страницы.

Крайне важно, чтобы скрипты имели доступ к общему визуальному контенту. Поэтому я не могу полностью изолировать их в фреймах - кроме того, мне интересно, есть ли более плавный подход к отдельным контекстам.

Я возился с нативной версией, где я использовал отдельные контексты с использованием движка JavaScript V8, но теперь я хочу перенести это в браузер - даже если это только Google Chrome.

Есть идеи?

1 Ответ

3 голосов
/ 26 августа 2011

Песочница. JavaScript по своей сути сложен, скорее всего, сценарию удастся вырваться, как бы вы ни старались. Лучшим вариантом действий может быть загрузка сценариев в iframe без прямого доступа к основному кадру и предоставление ему возможности обмениваться данными с основным кадром через window.postMessage(). Затем вы можете определить API, в котором фрейму разрешено использовать таким образом, не получая слишком много энергии.

Редактировать : То же самое возможно с Web Workers , как отмечено в Возможно ли изолированное исполнение JavaScript, работающего в браузере? , поддержка браузера для веб-работников однако не так широко распространен, как для window.postMessage() (сравните http://caniuse.com/#search=postMessage и http://caniuse.com/#search=workers).

...