Сценарии инъекций, выполняющиеся несколько раз - PullRequest
1 голос
/ 10 июля 2010

Я прочитал документацию и понимаю, что этого следовало ожидать:

Скрипты внедряются в страницу верхнего уровня и любые дочерние элементы с источниками HTML, такими как iframes. Не думайте, что на вкладке браузера есть только один экземпляр вашего скрипта.

Мне интересно, хотя:

  1. Какие элементы имеют «источники HTML» (изображения? Объекты?), Кроме iframes? Термин «исходники HTML» неудобен для моих ушей.
  2. Есть ли способ определить, какой элемент выполняет скрипт?

Я отфильтровал iframes, определив это window === window.top, как рекомендовано, но другие элементы все еще выполняют сценарий, и он выполняет лот больше, чем хотелось бы.

Спасибо.

Ответы [ 2 ]

2 голосов
/ 16 июля 2010

Я действительно сам виноват в том, что отвечаю на свой вопрос, потому что я не предоставил достаточно информации в своем вопросе.В свою защиту я не знал в то время, когда предоставлял слишком мало информации.

Во всяком случае, когда я отправлялся в путь к решению этой проблемы, Я задал вопрос на форуме разработчиков Apple и включил следующую информацию:

  • Все в сценарии происходит в событии beforeload document (или должен был).

Я узнал, что событие beforeload запускается только для субресурсов в документе,Не для самого документа (или окна).Я удалил обработчик событий и убедился, что скрипт был применен как стартовый скрипт (так и было).Я уже применил тест для окна в качестве верхнего окна, чтобы я был покрыт.Теперь мой скрипт впрыска срабатывает только один раз.

0 голосов
/ 15 июля 2010

Другими источниками HTML могут быть фреймы или теги объектов (с содержимым HTML).Я не думаю, что это может быть что-то еще.Однако, насколько мне известно, они также должны быть отфильтрованы с помощью window === window.top.Попробуйте console.log с помощью переменной document.location, чтобы увидеть, какой URL-адрес запускает ваш внедренный скрипт, и, возможно, вы сможете найти, что их загружает.

...