Как изменить функцию JavaScript внутри iframe с помощью букмарклетов? - PullRequest
3 голосов
/ 25 марта 2011

Допустим, у меня есть HTML-страница с iframe, которая имеет свои собственные функции javascript.

function foo(){
//doSomething
}
  • Веб-браузер указывает на главная страница.
  • И главная страница, и фрейм в том же домене.

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

javascript:document.getElementById('iframe').contentWindow.foo();

Я могу заменить функции js на главной странице, введя новые определения функций внутри адресной строки. Однако он не работает с функциями внутри iframe.

javascript:function foo(){//doSomethingElse}

Это только добавляет эту функцию на главную страницу. Iframe по-прежнему использует свою собственную функцию foo.

Я мог бы открыть iframe в новой вкладке, тогда можно изменить функцию. Но мне интересно, можно ли заменить js-функции, которые находятся внутри iframe, введя их в адресную строку с главной страницы?

1 Ответ

0 голосов
/ 25 марта 2011

Попробуйте следующее: он обрабатывает foo как переменную и назначает ее как ссылку на функцию (или что-то в этом роде ... мой javascript не самый лучший). Функция enclosing () () так, что возвращаемое значение игнорируется и страница не перезагружается.

javascript:(document.getElementById('iframe').contentWindow.foo=function(){alert('bar');})()

(проверено в Firefox)

...