Предотвращение загрязнения глобальных объектов с помощью загрузчика сценариев iframe?

Проблема ...

Существуют плохо закодированные скрипты, которые необходимо включить в веб-страницу.

Эти скрипты загрязняют глобальную область видимости, делая такие вещи, как:

  • Назначение значений необъявленным идентификаторам
  • Добавление свойств к функциям встроенного конструктора (например, Object и Array ) и их прототипам
  • Прочие гадости.

Решение?

Я хочу включить скрипты без побочных эффектов. Я думаю, что этого можно добиться, загрузив скрипт в iframe и экспортируя объекты как свойства родительского окна. Вот что я получил на данный момент:



Вопросы:

  • Произойдет ли потенциальный хаос, если сценарий изменит встроенные прототипы и я перенесу его в другое окно, или встроенные модули моего родительского окна останутся чистыми, и все будет " просто работать? »

  • Будет ли эта идея работать в« большинстве »браузеров, или есть ограничитель? Пока не проверял ни на чем, кроме chrome и moz.

  • Я бы хотел удалить iframe после перетаскивания объекта в текущее окно, но moz потеряет ссылку на объект, если iframe будет удален. Кто-нибудь знает способ обойти это?

  • Это уже было сделано, или есть лучший способ достичь моей цели? Если да, то как называется сценарий или метод, который мне следует искать?

(вопрос перенесен из сюда )

7
задан Community 23 May 2017 в 12:18
поделиться