Как позволить боковой панели выполнять код JavaScript из основного документа? - PullRequest
2 голосов
/ 01 декабря 2010

Я работаю над боковой панелью Firefox, которая загружает веб-страницу в основной документ.Теперь я хотел бы вызвать функцию javascript из основного документа в ответ на нажатие кнопки на боковой панели.Как боковая панель может заставить основной документ выполнять одну из своих функций javascript?До сих пор у меня есть переменная, содержащая код JavaScript, но как это можно выполнить?(в контексте загруженного сайта?)

Ответы [ 2 ]

7 голосов
/ 01 декабря 2010

Доктор Молле прав в своем ответе, но мне всегда нравятся рабочие примеры.

console.log("Opening new page at http://example.com");
page = window.open('http://example.com');
console.log(page);
console.log("calling alert on opened page");
page.alert("I opened and the previous windows JS called me!!!!");
console.log("called alert");

Пример страницы => [Удалено.См. Обновление ниже]

Результаты:

alert initiated from other page console logs

Примечание: Мне пришлось разрешить всплывающие окна длядемонстрационный код для работы, но это еще одна проблема для другого вопроса SO.;)

firefox popup blocked notice

ОБНОВЛЕНИЕ:

Так что

page.alert()

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

Пример страницы => http://mikegrace.s3.amazonaws.com/forums/stack-overflow/example-call-function-in-opened-page.html

JS выглядит так

page = window.open('http://mikegrace.s3.amazonaws.com/forums/stack-overflow/example-the-other-page.html');

var initOtherPage = function() {
  try {
    page.showMeTheMoney();
    console.log("It worked!");
  } catch (e) {
    console.log("failed to call function on other page because: "+e);
    setTimeout(function() {
      console.log("trying again")
      initOtherPage();
    }, 1000);
  }
}
initOtherPage();

Консольный вывод

alt text

Открытая страница

alt text

3 голосов
/ 01 декабря 2010

Загрузите страницу с помощью window.open () и сохраните ее в переменную:

page=window.open('some.htm')

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

page.someFunction()
...