SunnyDay
Спасибо. :)
Планирую расширение для сайта использующего XMLHTTPRequest, ранее с ним работать не приходилось и возникли трудности. По задумке - нужно отследить запрос на сервер, если он из тех что требуется то перехватить и ответ на него, но покачто не подобрал даже какие события надо слушать, нет ли статьи на русском где это описано? В расширение Firebug найти ответа не вышло, как-то там много всего. :rolleyes:
MySh
Там не показано как посмотреть страничку после работы JS :(
Здравствуйте!
Как можно получить содержимое странички после выполнения JS, но со ссылками и другими тегами?
С document.body.innerHTML я получаю полное содержание, но с ещё не выполненным JS, а используя document.body.textContent удаляются теги, и JS не выполняется... остаются конструкции вида:
:rolleyes:
Можно ли из плагина например работать с локальными файлами?
Да, можно. С помощью такого файлика достаточно легко получается.
http://kb.mozillazine.org/Dev_:_Extensi … _IO_:_jsio
хех, я в другом месте пробовал менять :blush:
Спасибо.
Спасибо, Антон, код работает.
Но я забыл уточнить, что это не для ввода символов требуется, а для навигации по сайту. Если курсор не в поле ввода то код не срабатывает. :dumb:
Есть какое-нибудь решение?
Как в FireFox можно программно "нажимать" заданную клавишу?
Т.е. с имитировать нажатие для активной вкладки?
Нужно менять содержимое фреймов из расширения, а их количество периодически меняется и обращаться по номеру нельзя.
Нужно по имени, но не получается :(
Так примерно выглядит страничка:
[code]<html>
<frameset rows="50,*,30" frameborder="No" framespacing="0" border="0">
<frame name="menu" src="menu.php" marginwidth="0" marginheight="0" scrolling="No" frameborder="No" noresize></frame>
<frameset rows="65%,35%" frameborder="Yes" framespacing="1" border="1">
<frameset cols="174,65%,35%,10" frameborder="No" framespacing="0" border="0">
<frame name="geto" src="geto.php?g=0" marginwidth="0" marginheight="0" scrolling="No" frameborder="No"></frame>
<frame name="germe" marginwidth="0" marginheight="0" scrolling="Auto" frameborder="No"></frame>
<frame name="item" marginwidth="0" marginheight="0" scrolling="Auto" frameborder="No"></frame>
<frame name="berrigt" src="berright.html" marginwidth="0" marginheight="0" scrolling="No" frameborder="No"></frame>
</frameset>
<frame name="
Попробовал удалить фрейм конструкцией типа:
var id; id = document.getElementById('menu'); if (id) { id.parentNode.removeChild(id); }
где "menu" - это название фрейма.
Но не вышло. Как это сделать правильно?
Если я правильно понял вопрос, то так:
По моему
В принцие, решаемая: https://developer.mozilla.org/en/Creating_Sandboxed_HTTP_Connections#HTTP_referrer
Но сначала можно попробовать изменить document.referrer у документа фрейма.
document.referrer - неизменяемый вроде. У меня при попытке заменить значение стопарился код в этом месте.
А с первым не получается, не понимаю как сработать должно.
Эта проблема не решаемая? :rolleyes:
При использовании
расширение открывает страницу в заданном фрейме, но при этом referrer пустой.
Есть метод loadURI(), в нём можно задавать referrer, но не получается указать фрейм в котором должна открыться страница.
Как сделать так чтобы страница открывалась во фрейме и при этом передавалась страничка с которой она загружена? :)
Shutnik, спасибо, помогло.
:rolleyes:
Пишу в расширении функцию отправки данных на сайт. Т.к. объём может быть большой, то использую метод POST.
Всё работает, но возникла проблема с кодировкой. Данные отправляются в кодировке Windows-1251, приходит абракодабра. Использовал приведённый на форуме перекодировщик, не помогло, приходит тоже абракодабра, но другая.
В чём может быть моя ошибка?
Конвертор:
function convertor(str) { var converter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"] .createInstance(Components.interfaces.nsIScriptableUnicodeConverter); converter.charset = "Windows-1251";//"windows-1251" str = converter.ConvertFromUnicode(str); return str; }
Отправка данных.
[code]var hey='Сообщить о событии';
var name='Название на кириллице';
var text='Текст, тоже на кириллице ';
var http = new XMLHttpRequest();
var postdata= "name="+convertor(name)+"&safe="+hey+"&text="+convertor(text)+"&tip=4&action=post";
http.open("POST", "http://forum.mozilla-rus
…Работает :)
Infocatcher, спасибо. :D
Infocatcher, спасибо. К типу nsIURI преобразовывает, по крайней мере на alert переменной uri пишет: [xpconnect wrapped nsIURI]
Но вот перехода не происходит :(
var uri = makeURI('http://forum.mozilla-russia.org'); //var uri = makeURI(String(window. getBrowser (). contentDocument. location. href)); var href = "http://forum.mozilla-russia.org"; loadURI(href, null, uri); alert(uri);
В чём может быть проблема?
Нужно перейти на страничку и передать URI ссылающегося документа, но почему-то referrer нужно передавать в формате nsIURI.
Собственно, как преобразовать строку к типу nsIURI?
var loc = String(window. getBrowser (). contentDocument. location. href); var href = "http://forum.mozilla-russia.org"; loadURI(href, null, loc);
С тем что я оказывается каждый раз создаю ещё одного слушателя события разобрался. :dumb:
я использую такой метод и никаких проблем не встретил
Спасибо, Shutnik. Тогда просмотрел тему, но не разобрался.
Но после того как ткнули носом всё увидел и понял, что это ОНО :)
Правда не получается использовать это нужным образом.
[code]function my_unload_listener(){ alert("beforeunload");
}
function my_load_listener (event)
{
var doc = event.originalTarget;
var win = getBrowser().selectedBrowser.contentDocument;
if(doc == win)
{ //alert("load");
rr=123;
// активный таб
}
}
var rr=0;
function rrr(){
var appcontent = document.getElementById("appcontent");
if(!appcontent)
return;
appcontent.addEventListener("load", my_load_listener, true);
appcontent.addEventListener("beforeunload", my_unload_listener, true);
}
loadURI ("forum.mozilla-russia.org", null, null);
rrr();
Задача, сразу после загрузки странички на активной вкладке начать выполнять некие действия.
Сразу - это десятые доли секунды :)
Используя команду вида:
function pageSwitched(){ alert("Страничка загружена, продолжаю работать."); } getBrowser().addEventListener("load", pageSwitched(), false);
можно проверить состояние странички на момент вызова.
По идее должна вызываться сразу после команды перехода по заданному адресу.
Но если нажать, к примеру F5, а потом запустить проверку - то скажет, что страничка загружена, т.к. это ещё старая страничка и переход не успел начаться.
Это первая проблема.
Вторая в том что если загрузка новой странички началась то команда по окончании загрузки не выполнится.
Как это можно решить? Пока есть лишь вариант запуска проверки в цикле, но вдруг есть более интересные варианты? :angel:
Содержимое и адрес странички активной вкладки может и не измениться, при переходе. :whiteflag:
…Здорово :)
Infocatcher, спасибо.
Получилось. Правда какая-то сложная конструкция выходит чтобы добраться до названий всех ссылок.
А можно как бы создать документ, вставить в него все фреймы, и там уже просто искать командой
.
Или так будет менее производительно?
Спасибо, теперь полный набор :)
А как можно захватить ещё и фреймы на страничке? :whiteflag:
19-11-2008 21:06:31
Т.е. во фреймах тоже ссылки есть, но приведёнными выше способами они не доступны.