Расширение chrome, которое я разработал, внедряет Polymer и другие веб-компоненты на главную страницу через импорт HTML в отличие от типичного метода, который заключается в использовании сценариев контента, которые автоматически запускаются в изолированный мир.
Причина этого связана с двумя вещами:
- Расширения Chrome не могут регистрировать пользовательские элементы из сценариев контента
- Расширение расширения chrome не поддерживает импорт HTML, работающий в изолированной среде, только javascript
Из-за этих ограничений мне пришлось прибегать к загрузке моих компонентов на главную страницу <head>
как описанную здесь.
Очевидная проблема, с которой я столкнулся, заключается в том, что мой javascript вступает в конфликт с javascript на главной странице сайта [на некоторых сайтах], поскольку метод, который я использую для ввода моих зависимостей, не запускается в "изолированном мире".
До сих пор я разрешил большинство этих проблем, поставив задачу gulp переименовать Polymer и мои компоненты во избежание конфликтов, но, к сожалению, он не идеален и необходим более надежный подход.
Наконец, на мой вопрос: возможно ли создать "изолированный мир" для моего javascript? Возможно, другой объект документа? Если нет, есть ли какие-либо стратегии, которые я могу использовать для обеспечения того, чтобы мой код выполнялся изолированно?
Update:
Несколько из вас предложили использовать IIFE, что я использовал до сих пор. Я ищу ответ в соответствии с изолированным миром, похожим на то, как google chrome запускает расширения. Это связано главным образом с тем, что Полимер должен быть присоединен к глобальному объекту окна.