>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >Доступ к глобальным переменным окна из расширения http://forum.mozilla-russia.org/viewtopic.php?id=54895 |
AvatrBlueray > 10-05-2012 12:22:33 |
Добрый день. на страницах вконтакта при запущенном аудио плеере в глобальных переменных появляется объект audiopleer. У этого объекта есть методы: pause, play, prev, next, add. как можно получить доступ к этому объекту. я прочитал статьи про https://developer.mozilla.org/en/Code_snippets/Tabbed_browser и все статьи рядом пробовал получить доступ к объекту через contentWindow и contentDocument. каждый раз объект audiopleer был undefined сейчас в расширении https://addons.mozilla.org/ru/firefox/addon/vk-player-control-panel/ используется следующий метод 1) запоминаем текущую вкладку это работает, мигания вкладок нет, но я считаю этот метод неправильным у меня есть еще один вариант получения доступа к объектам 0) находим нужную вкладку и делаем ее активной есть менее извратный вариант получения доступа к глобальным объектам других вкладок? |
AvatrBlueray > 10-05-2012 18:05:24 |
у меня получился вот такой рабочий метод получения данных из объекта _gat. есть ли варианты проще? Выделить код Код:test4: function(){ script = window.content.document.getElementById('_script'); // если контейнер со скриптом пуст сохдаем контейнер и скрипт if ( script == null){ script = window.content.document.createElement('div'); script.setAttribute('id','_script'); script.setAttribute('onclick','_xz_func();'); body.appendChild(script); script_text = window.content.document.createElement('script'); var newtext = document.createTextNode(" function _xz_func(){ "); script_text.appendChild(newtext); newtext = document.createTextNode(" _xz = document.getElementById('_xz'); "); script_text.appendChild(newtext); newtext = document.createTextNode(" if (_xz == null ){ "); script_text.appendChild(newtext); newtext = document.createTextNode(" _xz = document.createElement('div'); "); script_text.appendChild(newtext); newtext = document.createTextNode(" _xz.setAttribute('id', '_xz'); "); script_text.appendChild(newtext); newtext = document.createTextNode(" document.body.appendChild(_xz); "); script_text.appendChild(newtext); newtext = document.createTextNode(" } "); script_text.appendChild(newtext); newtext = document.createTextNode(" while (_xz.firstChild) { "); script_text.appendChild(newtext); newtext = document.createTextNode(" _xz.removeChild(_xz.firstChild); "); script_text.appendChild(newtext); newtext = document.createTextNode(" } "); script_text.appendChild(newtext); newtext = document.createTextNode(" "); script_text.appendChild(newtext); // получаем данные объекта _gat, объект создаваемый скриптом гугл аналитики // и складываем их в <div id = "_xz"> newtext = document.createTextNode(" for ( x in _gat){ "); script_text.appendChild(newtext); newtext = document.createTextNode(" _temp = document.createElement('div'); "); script_text.appendChild(newtext); newtext = document.createTextNode(" _temp.setAttribute('_test',x); "); script_text.appendChild(newtext); newtext = document.createTextNode(" _xz.appendChild(_temp); "); script_text.appendChild(newtext); newtext = document.createTextNode(" "); script_text.appendChild(newtext); newtext = document.createTextNode(" } "); script_text.appendChild(newtext); newtext = document.createTextNode(" } "); script_text.appendChild(newtext); script.appendChild(script_text); } var evt = document.createEvent("MouseEvents"); evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); // за пускаем сборщик script.dispatchEvent(evt); // получаем данные из элемента на странице xz = window.content.document.getElementById('_xz'); cells = xz.getElementsByTagName('div'); var s=''; for (var i = 0; i < cells.length; i++) { var status = cells[i].getAttribute("_test"); s = s + status +'; '; } var ts = Math.round((new Date()).getTime() / 1000); window.content.document.title = ts+' '+s; }, |