Страницы: 1
Спасибо.
Есть ли возможность при запуске Firefox указать размер и положение окна браузера. Хочу прописать эти параметры в ярлыке, для Windows 7.
okkamas_knife спасибо.
[code]
var pageSize = null,
nsICacheService = Components.interfaces.nsICacheService,
ACCESS_READ = Components.interfaces.nsICache.ACCESS_READ,
cacheService = Components.classes["@mozilla.org/network/cache-service;1"].getService(nsICacheService),
httpCacheSession = cacheService.createSession("HTTP", 0, true);
function openCacheEntry( url, callBack ) {
var tries = 0,
checkCacheListener = {
onCacheEntryAvailable : function ( entry, access, status ) {
if ( entry || tries === 1 ) {
callBack(entry);
} else {
tries++;
}
}
};
httpCacheSession.asyncOpenCacheEntry( url, ACCESS_READ, checkCacheListener, true );
}
httpCacheSession.doomEntriesIfExpired = false;
openCacheEntry( content.document.location.toString().replace(/#.*$/, ""), function (cacheEntry) {
if (cacheEntry) {
pageSize =
function getPageSize() { var pageSize = null, cacheService = Components.classes["@mozilla.org/network/cache-service;1"].getService(Components.interfaces.nsICacheService), httpCacheSession = cacheService.createSession("HTTP", 0, true); httpCacheSession.doomEntriesIfExpired = false; var cacheEntryDescriptor = httpCacheSession.openCacheEntry(content.document.location.toString().replace(/#.*$/, ""), Components.interfaces.nsICache.ACCESS_READ, false); if (cacheEntryDescriptor) { pageSize = Math.round(cacheEntryDescriptor.dataSize / 1024 * 100) / 100; } alert('Размер страницы ' + pageSize + 'KB'); } // Ждем загрузки страницы if (content.document && content.document.readyState === 'complete') { getPageSize(); } else { content.addEventListener('load', getPageSize, false); }
В новых версиях Firefox вышеприведенный код перестал работать, вот ошибка:
[code]Ошибка: NS_ERROR_NOT_AVAILABLE: Component returned failure code: 0x
…Как отследить загрузку/инициализацию расширения которое встраивается в toolbarpalette.
Это такое расширение которое после установки нужно еще перетащить на панель.
Дело в том что сразу после установки расширения когда его еще пользователь не добавил на панель, скрипты выполняются но DOM-элементы расширения не доступны.
Вот нужно запустить скрипты на выполнение только когда расширение попадет на панель.
Вот само расширение (я привожу малую часть):
[code]
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="chrome://pam/skin/overlay.css" type="text/css"?>
<overlay id="pam-overlay" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/javascript;version=1.8" src="scripts/utils.js"></script>
<script type="application/javascript;version=1.8" src="scripts/overlay.js"></script>
<toolbarpalette id="BrowserToolbarPalette">
<toolbaritem id="pam-toolbaritem" class="chromeclass-toolbar-additional" removable="true" title
Для того чтоб получить вес загруженной страницы (это чистый html, без css, image и прочего) можно воспользоваться следующим скриптом:
function getPageSize() { var pageSize = null, cacheService = Components.classes["@mozilla.org/network/cache-service;1"].getService(Components.interfaces.nsICacheService), httpCacheSession = cacheService.createSession("HTTP", 0, true); httpCacheSession.doomEntriesIfExpired = false; var cacheEntryDescriptor = httpCacheSession.openCacheEntry(content.document.location.toString().replace(/#.*$/, ""), Components.interfaces.nsICache.ACCESS_READ, false); if (cacheEntryDescriptor) { pageSize = Math.round(cacheEntryDescriptor.dataSize / 1024 * 100) / 100; } alert('Размер страницы ' + pageSize + 'KB'); } // Ждем загрузки страницы if (content.document && content.document.readyState === 'complete') { getPageSize(); } else { content.addEventListener('load', getPageSize, false); }
Подскажите как можно получить размер загруженной страницы из расширения.
При заливке расширения на Мозиллу (https://addons.mozilla.org/ru/firefox/) оно проходит автоматическое тестирование.
После тестов можно посмотреть отчет. В отчете постоянно присутствуют предупреждения о том что расширение загрязняет глобальную область видимости,
то есть создает глобальные переменные. Например протестировав такой вот код:
[code]
nsRDS.uniqueName = (function () {
var uniqueA,
uniqueB,
uniqueC;
return {
methodA : function () {
uniqueA = 'test A';
uniqueA += ' string';
console.log(uniqueA);
},
methodB : function () {
uniqueB = 'test B';
uniqueB += ' 3333';
console.log(uniqueB);
},
methodC : function () {
uniqueC = 'test C';
uniqueC += ' ----';
console.log(uniqueC);
},
methodABC : function () {
console.log(uniqueA + ' @@ ' + uniqueB + ' @@ ' + uniqueC);
}
Подскажите как с расширения отследить скрытие/открытие Панели дополнения (Ctrl+\) в Firefox.
Ну по сути флешки на сайте являются независимыми элементами и все события они обрабатывают напрямую и сами. И если в флешке не предусмотрено пробрасывание события из скрипта, то наверное никак.
Но я могу ошибаться.
Я вставляю файлы из расширения во внешние страницы через протокол "resource://"
Идем в файл chrome.manifest и там пишем:
теперь ключевое слово "myextimages" ссылается на папку "chrome/skin/images/"
используем во внешней странице:
resource://myextimages/logo.png // или если в папке "chrome/skin/images/" есть еще папка например "icons" resource://myextimages/icons/logo.png
Magneto
Эта функция делает дополнительный запрос к сайту или использует уже полученные при входе адреса?20-10-2012 14:49:46
Где этот код будет работать? В кнопке, дополнении? Функцию callBack самому определять?
Эта функция не посылает никаких HTTP запросов ни на сайт ни куда либо. Используется TCP или UPD протоколы эти запросы шлются на DNS-сервера, http://ru.wikipedia.org/wiki/%D0%9A%D0% … %D1%8B_DNS
Если уже было обращение к какому либо сайту то его IP уже закешировано. (о кешировании я сделал вывод замеряв время получения IP для не посещеных сайтов (20 - 100 мс) и посещенных (1 мс)).
Эту функцию я использую в расширении для браузера Firefox.
Функция callBack конечно должна быть Ваша, в этой функции Вы можете обработать все полученные данные.
…Вообщем как я и предполагал у Firefox есть модуль который преобразовывает домен сайта в IP (понятно что браузер обращается за этим к DNS серверу),
но главное что это происходит достаточно прозрачно и не требует использования сторонних сервисов.
Вот код, возможно что кому то пригодится:
[code]
function getIP (domain, callBack) {
var dns = Components.classes['@mozilla.org/network/dns-service;1'].getService(Components.interfaces.nsIDNSService),
thread = Components.classes["@mozilla.org/thread-manager;1"].getService().mainThread,
dnslistener = {
onLookupComplete: function (aRequest, aRecord, aStatus) {
var arrayIP = [];
if (aStatus === 0) {
while (aRecord && aRecord.hasMore()) {
arrayIP.push(aRecord.getNextAddrAsString());
}
} else {
arrayIP = null;
}
callBack(domain, arrayIP);
}
Добрый день!
Каким образом подключить в приложении javascript 1.7
Не работает let, range() и другое.
Ведь в браузере есть механизм при помощи которого он преобразовывает имена в IP, и кеширует их.
Как получить IP сайта средствами браузера Firefox в расширении?
Что-то типа:
1
на фишинговых страницах, действительно возвращает адрес типа : about:blocked?e=malwareBlocked&u=http%3A//chazot.ru/&s=blacklist&c=UTF-8&d=%D0%98%D0%BC%D0%B5%D0%B5
2
Но если установить фишинговую страницу в качестве домашней то возвращает : about:blank
3
И еще хуже, если в новой вкладке открыть сайт, например http://habrahabr.ru/, а после в адресную строку ввести адрес фишингового сайта, например ( http://ianfette.org/ или http://chazot.ru/ или http://culturedep.ru/ или http://arbat.net.ua/ ), то вернется : http://habrahabr.ru/, тоесть адрес предыдущего сайта.
При обнаружении фишингового сайта браузер открывает страницу about:blocked?e=malwareBlocked&u=адрес&s=blacklist&c=*
При этом браузер не меняет адрес в адресной строке и возвращает адрес фишингового сайта
но по идее браузер должен както сигнализировать что это плохой сайт значком там или специфическим сообщением - соответственно мониторь его наличие перед проверкой и если есть сигнал то соответственно не запускай парсинг данных
Вот я и спрашиваю как узнать что данный сайт находится в БлэкЛисте (не отправляя запросы в гугл и не ковыряя базу Firefox)?
Значит пишу небольшое расширение для Firefox, это расширение анализирует и получает некоторые значения из документа текущей открытой страницы.
Тоесть после полной загрузки веб-страницы расширение приступает к анализу документа и выводит пользователю нужные данные.
Так вот в чем проблема, когда пользователь посещает фишинговые сайты (сайты с вирусами), браузер подменяет оригинальные страницы своей заглушкой с предупреждением.
В этом случае если попробовать получить документ текущей страницы (которая с предупреждением), например через
, то браузер возвращает разные документы:
1. возвращает документ с пустыми тегами <body> и <head>
2. возвращает разметку заглушки с предупреждением
3. возвращает документ предыдущей страницы
Таким образом очень проблематично узнать что браузер считает текущую страницу фишинговой. И что не нужно моему расширению парсить ее.
Как узнать что браузер считает текущую страницу фишинговой и заменил документ на свое предупреждение.
…Как Firefox идентифицирует сайты которые содержат вирусы? Например - http://chazot.ru/.
Браузер содержит так называемый BlackList или каждый раз обращается на внешний сервер за данными?
Я пробовал сниффером посмотреть на сетевую активность - но ничего толкового не увидел. Если все адреса хранятся
в списке, то где находится этот список и если он обновляется то откуда?
Вообщем интересует вся информация о данной технологии.
var arrayTabs = gBrowser.tabContainer.getElementsByTagName('tab'), activeTab; for (var l = arrayTabs.length, i = 0; i < l; i += 1) { if (arrayTabs[i].selected) { activeTab = arrayTabs[i]; break; }; };
Оказалось что вкладки и страницы связаны непонятным образом)). А как теперь перебрать имеющиеся страницы и сопоставить их со вкладками?
Есть небольшое расширение - кнопка, на эту кнопку при создании каждой вкладки навешивается событие onClick который кое что изменяет на странице.
Теперь если открыть несколько вкладок и кликнуть по кнопке в расширении то изменения произойдут во всех вкладках, а нужно чтоб только в текущей.
Вот как отобрать только активную вкладку?
myBuuton.addEventListener('click', function() { if (текущая вкладка) { делаем нужные операции со страницей //content.document.body.style.background = 'black'; }; }, false);
Unghost - прежде чем задать вопрос я пытался сам во всем разобраться, и по выше указанным ссылкам я уже ходил.
Но так как я очень плохо знаю английский, я мало что понял, - я также догадался воспользовался переводчиком от Google ......
Ну как то так.
Заинтересовался новым тегом <audio>
Хочу реализовать простой плеер с поддержкой плейлистов, но проблема в том что у меня не получается запустить следующую композицию в браузере Firefox.
К примеру в Opera все элементрно, достаточно обьявить(заменить) параметр src, к примеру вот так:
ну или так:
и эта композиция сразу становится доступной для проигрывания.
Как я выше говорил в Firefox это не работает.
Посоветуйте как реализовать переключение на другую композицию в Firefox.
Вот код который есть:
[code]
<script type="text/javascript">
var balanUrl = 'http://dl.dropbox.com/u/6001712/player/audio-100/Dan%20Balan%20-%20Chica%20Bomb.ogg';
var plumbUrl = 'http://dl.dropbox.com/u/6001712/player/audio-100/Plumb%20-%20Hang%20On.ogg';
var sergeUrl = 'http://dl.dropbox.com/u/6001712/player/audio-100/Serge%20Devant%20Emma%20Hewitt%20-%20Take%20Me%20With%20You.ogg';
Страницы: 1