Использование букмарклета для изменения текущей страницы и доступ к iFrames
Я работал над созданием букмарклета, чтобы внести небольшие изменения в веб-страницу, для личного пользования, когда я просматриваю сайт. У меня есть букмарклет, динамически загружающий jquery (при необходимости), и я могу получить доступ и изменить страницу без каких-либо проблем.
Эта страница имеет несколько вложенных iFrames, HTML-код, который я хочу изменить, находится в iFrame, который имеет домен, отличный от исходной страницы. Итак, я получаю:
Unsafe JavaScript attempt to access frame with URL
Браузер использует самую верхнюю страницу в качестве отправной точки для моего скрипта, что интересно, поскольку его происхождение является закладкой. Можно ли обойти это ограничение?
1 ответ
Нет никакого способа обойти это ограничение, используя только букмарклет. Когда вы выполняете букмарклет, он выполняется в контексте текущей (верхней) страницы. Несмотря на то, что ограничение называется "та же политика происхождения", происхождение означает контекст, в котором был выполнен код, а не происхождение, откуда пришел код. Когда вы выполняете букмарклет, код приходит из закладки, но выполняется внутри текущей страницы.
Для достижения вашей цели вам нужно будет создать пользовательский скрипт или аддон / расширение. Пользовательские сценарии поддерживаются в Firefox, если вы устанавливаете Greasemonkey и изначально в Chrome.