т.е мне нужно без отображения загрузить страницу что бы при этом сработал javascript загружаемой страницы
Для этого не обязательно создавать вкладку. Можно создать скрытый элемент browser (с аттрибутом collapsed=true и type=content), и в него загрузить нужную страницу.
Примерно так:
[code] // Создаём скрытый элемент browser:
var windowMediator = Components.classes['@mozilla.org/appshell/window-mediator;1'].getService(Components.interfaces.nsIWindowMediator);
var _window = windowMediator.getMostRecentWindow("navigator:browser");
var docroot = _window.document;
var shadow = docroot.createElement('browser');
shadow.setAttribute("collapsed", true);
shadow.setAttribute("type", "content");
// Вставляем браузер в иерархию окна:
docroot.documentElement.appendChild(shadow);
// Важно - останавливаем загрузку страницы по умолчанию:
shadow.webNavigation.stop(Components.interfaces.nsIWebNavigation.STOP_NETWORK);
sha
…После суток ковыряния DOM Inspector'а решения всё-таки было найдено. Если кому интересно:
var win = gBrowser.contentWindow; // Показывается ли вертикальная полоса прокрутки? var vscroll = (win.scrollMaxY !== 0); // Показывается ли горизонтальная полоса прокрутки? var hscroll = (win.scrollMaxX !== 0);
Доброго дня всем,
можно ли как-то определить, показываются ли для активного браузера (gBrowser.selectedTab.linkedBrowser) полосы прокрутки? Может свойства есть какие-то?
Сейчас определяю как (для вертикальной полосы прокрутки):
- но это ненадёжно, и не работает для XUL-контента.
Как быть?
Всем доброго дня,
ситуация следующая: записываю в nsIServerSocket большой кусок данных через его output stream:
onSocketAccepted: function(serverSocket, clientSocket) { this.clientSocket = clientSocket; this.outputStream = clientSocket.openOutputStream(0, 0, 0).QueryInterface(that.Ci.nsIAsyncOutputStream); ... this.outputStream.write(..., ...)
Данные пишутся в несколько заходов.
Мне надо после окончания записи закрыть соединение. Но как отследить это окончание? asyncWait/onOutputStreamReady не помогают - onOutputStreamReady иногда вызывается, когда часть данные ещё не отдана в сокет. setEventSink на сокете тоже не помогает - почему-то onTransportStatus не вызывается после записи последнего куска.
Может есть какое-то решение? Заранее спасибо.
…Всем привет,
ситуация такая: мне в своём расширении надо легализовать POST-редирект. То есть я отсылаю POST-запрос, оттуда приходит 302, и мне надо отослать по новому адресу тот же POST запрос (браузер по умолчанию конвертирует в GET - в целях безопастности, видимо).
Как это сделать? вроде через http-on-modify-request, но как полностью клонировать оригинальный POST-запрос?
Заранее большое спасибо.
Судя по -
У нас есть в Инструментах пункт меню, по нажатию которого на этой страничке генерируется ID
- речь всё-таки идёт о эмуляции клика. Я в таких случаях использую скрытый iframe, в который гружу нужную страницу, а дальше - дело техники.
импотент надо добавлять, чай
Неужто вы думаете, что я этого не попробовал :)
Решение, если кого интересует:
Здравствуйте уважаемые,
никак не могу удалить рамку (border) вокруг элемента tree. Несмотря на:
рамка не исчезает, и DOM Inspector показывает в Computed Styles, что элемент всё равно имеет border-left-width равный 1. Стили правильные,проверял.
Что делаю не так?
Здравствуйте уважаемые,
в расширении есть кнопка, которая добавляет букву A в текстовое поле, имеющее фокус. Код:
var text = document.commandDispatcher.focusedElement; var event = document.createEvent("KeyboardEvent"); var code = 'A'.charCodeAt(0); event.initKeyEvent('keydown', false, false, null, false, false, false, false, code, code); text.dispatchEvent(event); event.initKeyEvent('keypress', false, false, null, false, false, false, false, code, code); text.dispatchEvent(event); event.initKeyEvent('keyup', false, false, null, false, false, false, false, code, code); text.dispatchEvent(event);
Это работает со всеми INPUT и TEXTAREA полями. Но: не работает с текстовыми полями, являющимися частью Flash-виджетов. Если флэш имеет фокус, то событие успешно диспатчится - но буквы не появляется.
Тестировал здесь, раздел Contact me.
…Ну собсно, на 1м скрине видно, что надпись "Drag It!" уходит под таббокс.
03-11-2009 14:36:05
Thanks anyway.
Странно. Ошибки в консоли есть?
Тестовое расширение: http://webfile.ru/4054614
В Firefox 3.5 вы увидите серую панель с надписью "Drag It!" - за неё можно таскать панельку.
В Firefox 3.6, чтобы увидеть панель, вам возможно понадобится уменьшить высоту окна браузера - панелька вылезет из-под окна контента.
Выложите куда-нибудь расширение?
Расширение полностью - не могу (это полукоммерческая разработка), но попробую выдрать все что не относится к делу через часок.
Здравствуйте все,
Давным-давно я сделал для одного расширения XUL-панельку:
<vbox id="appcontent"> <vbox id="my-custom-panel" persist="style" hidden="true"> ... </vbox> </vbox>
Всё это дело (это, на самом деле, виртуальная клавиатура) "летало" над контентом открытых страниц.
Но тут вышла бета 3.6, и случилась неприятность - что ни делаю, созданная XUL-панель почему-то прячется за tabbrowser'ом, и вытащить её "на передний план" не представляется возможности.
Кто-нибудь сталкивался с таким? Очень хотел бы увидеть рабочий примерчик, может есть какие расширения с плавающими XUL-панелями?
Заранее спасибо.
Други, есть следующая задачка: по DOMContentLoaded разобрать страницу, и получить массив, состоящий из всех слов на странице. Может у кого уже есть готовый алгоритм? Заранее спасибо.
Здравствуйте все,
есть у меня расширение, которое ждёт, пока загрузится страница (по DOMContentLoaded), потом парсит эту страницу и подсвечивает элементы p и div. Всё просто.
Всё замечательно работает, пока мы не загружаем действительно тяжёлые страницы, например lemonde.fr. Ждать загрузки всего DOM приходится ну уж очень долго.
Есть ли какая-то возможность не ждать загрузки всего DOM, а делать парсинг по мере загрузки страницы?
Заранее спасибо.
> проверять необходимо у посетителей сайта
Скрипт со страницы не может получить доступа в сhrome пользователя. Так что таким макаром - никак.
Для пакета можно узнать.
Во! То что надо, спасибо Антон!
Здравствуйте форумчане.
Положим у меня русскоязычный файрфокс (т.е. локаль браузера - ru-Ru), и я на него устанавливаю расширение, имющее только en-Us локализацию. В этом случае, очевидно, для данного расширения будет использоваться DTD от en-US.
Вопрос вот в чём - можно ли, и если можно - как, узнать, какую локаль использует расширение с данным ID? Заранее спасибо.
Здравствуйте все,
Положим у нас есть некий HTML-документ. В этом документе - параграфы с неким текстом. Скриптом (из расширения) я выделил ссылки на текстовые ноды (nodeType == 3) внутри страницы.
А теперь - вопрос: как найти текущие координаты и размеры (top/left/width/height) текстовой ноды? Именно текстовой, не родителя.
Очевидный способ - временно упаковать текстовую ноду в span, но во многих случаях этот способ не подходит - мешают CSS-стили страницы...
С помощью функций getElementById, getElementsByTagName и т.д. можно получить ссылки на соответствующие поименованные ноды (по id, тэгу).
А можно ли получить ссылки на все текстовые ноды на странице?
2Крошка Ру: как раз самый нежелательный вариант. К тому же флёш, а не <video>.
Неужто нет какого-то stand-alone решения проблемы?
Здравствуйте все,
Положим у пользователя есть веб-камера. Я хочу на странице, скачанной пользователем, показать видео-поток с этой камеры, причём потом мне нужен в формате Ogg Theora (чтоб можно было воспользоваться тэгом video).
Можно ли это как-то сделать? Через расширение, сторонние проги, не важно как?
P.S. мне не нужно гнать траффик в сеть - я хочу просто на странице показать юзеру видео с его же камеры.
Вроде тут было
http://forum.mozilla-russia.org/viewtopic.php?id=36046
Не в кассу, увы.
Как известно, Firefox 3.5 понимает тэг video и умеет воспроизводить видео в формате Ogg (Theora). Посему 2 вопроса к форумчанам:
1. Я успешно засунул в страницу видео-файлик, который у меня находится на сервере. А может ли Firefox воспроизводить потоковое видео (из какого-либо медиа-сервера?)
2. Если да - есть ли где тестовый ogg-поток?
Заранее спасибо.