Несколько переводчиков Javascript на одной вкладке браузера - PullRequest
3 голосов
/ 01 февраля 2011

Возможно ли иметь несколько интерпретаторов (движков) JavaScript на одной вкладке окна браузера? Как?

Я изучил iframe, но не смог вызвать отдельный экземпляр интерпретатора javascript.

Ответы [ 3 ]

4 голосов
/ 01 февраля 2011

Возможно, вы захотите взглянуть на Web Workers .Эти разделы выполнения Javascript, но имеют очень определенный способ взаимодействия.

2 голосов
/ 01 февраля 2011

Каждая отдельная страница имеет свою глобальную среду. Связанные страницы связаны различными способами (window.parent, элементы фрейма и т. Д.). Если родительская страница включает в себя вторичную страницу в качестве содержимого тега <iframe> (или в настройке набора фреймов старого стиля, чего я не делал уже более десяти лет :-), то у страниц в фреймах есть свои отдельный window объект, а также собственные копии каркасов, инструментов и т. д.

Когда вы делаете что-то вроде document.getElementById("whatever"), это ограничивается глобальным контекстом, из которого оно вызывается. Точно так же каждый фрейм имеет свою собственную среду JavaScript с отдельной копией различных «нативных» конструкторов JavaScript. То есть «Массив» в одном кадре является отличным от «Массива» в другом кадре.

@ Упоминание Джаррода Н о веб-работниках также может представлять для вас большой интерес.

0 голосов
/ 01 февраля 2011

Как сказал Пойнти, каждая отдельная страница имеет свою глобальную среду.Поэтому у iframe также есть своя собственная среда Javascript.

Мои тесты с iframe не выполнялись, потому что я не ждал полной загрузки Javascript / веб-страницы в iframe, прежде чем вызывать его с главной страницы.

ps WebWorkers был немного сложным и имел меньшую поддержку того, что я хотел для своего проекта.Это выглядит как хорошее решение для будущих проектов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...