достъп до скрипт за съдържание до уеб страница js

Създавам добавка за firefox с онлайн конструктора на добавки. Как може да се използва съществуваща функция на уеб страница от добавката? Този сайт не ми принадлежи, така че не мога да обвържа слушатели на събития, за да изпратя събитие към него от моя аддон.

Актуализация: Сега имам този код, но не работи:

main.js

var widgets = require("widget");
var tabs = require("tabs");
var data = require("self").data;


var widget = widgets.Widget({
  id: "transfer",
  label: "Transfer",
  content: "Transfer",
  width: 100,
  onClick: function() {
    tabs.activeTab.attach({
      // native implementation of window.confirm will be used
      contentScriptFile: data.url("new.js")
    });
  }
});

new.js:

function foo()
{
    call(); // function in webpage

}
unsafeWindow.foo();

person Community    schedule 13.01.2012    source източник


Отговори (1)


Инжектирате скрипт за съдържание в страницата (напр. чрез пакет page-mod) и извиквате unsafeWindow.foo() в скрипта за съдържание, за да извикате функция foo() от скрипта за съдържание. Вижте документация за повече информация. Моля, не забравяйте да прочетете предупрежденията: вие разчитате на функцията на уеб страницата да се държи по начина, по който очаквате, но може и да не е така. По-специално, ако функцията върне нещо и искате да обработите този резултат, може по невнимание да въведете дупка в сигурността.

person Wladimir Palant    schedule 13.01.2012
comment
@tasaras: Хех, трябва да напишеш unsafeWindow.call()... - person Wladimir Palant; 15.01.2012
comment
Направих това, но се казва: в TypeError unsafeWindow.call не е функция, функцията на страницата е function call(){alert(asd);} работи добре с unsafeWindow.alert(asd) - person ; 15.01.2012
comment
@tasaras: Разбира се, грешка в кода ви. За да извикате функция call(), тази функция трябва действително да бъде дефинирана в уеб страницата... - person Wladimir Palant; 18.01.2012
comment
благодаря, функцията ми беше в jquery's ready() и не можа да я намери - person ; 18.01.2012