Полезная информация

Список ответов на каверзные вопросы можно получить в FAQ-разделе форума.

№10117-01-2010 18:18:55

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 3.6

Re: Greasemonkey

Minor пишет

Я не понял, в чём смысл этой ихней паранойи? Почему они боятся, что кто-то вставит обычную ссылку, но не боятся, что кто-то сделает тоже самое, только через addEventListener?

В том, что со страницы нельзя получить ссылку на обработчик, добавленный через addEventListener.
А если со страницы можно узнать ссылку на объект, созданный с более высокими привилегиями, есть вероятность получения и самих привилегий.

Вообще, в Firefox 3 и выше повышенные привилегии просто так не получить. Но, с другой стороны, не просто же так оставили XPCNativeWrapper.

Так что, если очень хочется, можно делать вот так:

Выделить код

Код:

document.getElementById('Div1').innerHTML = '<a href=javascript:MyFunc()>My Function</a>';

unsafeWindow.MyFunc = function() {alert('Okey')};

Или как-то так:

Выделить код

Код:

location.href = "javascript: " + <![CDATA[

...

]]>.toString();

После этого все ссылки на скрипты которые были в Div1 перестают работать. Что мне делать?

Смотря что изначально находилось внутри Div1.
Ссылки на узлы DOM-дерева, которые были внутри Div1, будут в любом случае потеряны. Вернее, будут ссылаться на уже удаленные из документа объекты.


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№10217-01-2010 22:07:00

Minor
Участник
 
Группа: Members
Зарегистрирован: 22-09-2006
Сообщений: 270
UA: Firefox 3.5

Re: Greasemonkey

Infocatcher

Infocatcher пишет

В том, что со страницы нельзя получить ссылку на обработчик, добавленный через addEventListener.

А если со страницы можно узнать ссылку на объект, созданный с более высокими привилегиями, есть вероятность получения и самих привилегий.

Что вообще за привилегии такие? Зачем они нужны?

Вообще это мой скрипт, мой браузер. Всё моё. Какое вообще их дело, чего я со своей страничкой делаю? Если у них мания преследования, то я здесь причём?

Как это отключить?


Выделить код

Код:

unsafeWindow.MyFunc = function() {alert('Okey')};

Alert я привёл только для примера. Чтобы показать, что не работает.


Infocatcher пишет

Смотря что изначально находилось внутри Div1.
Ссылки на узлы DOM-дерева, которые были внутри Div1, будут в любом случае потеряны. Вернее, будут ссылаться на уже удаленные из документа объекты.

Мне надо не конкретную функцию вручную вписывать. А универсальную функцию, которая бы перебирала все теги, искала все их события, и всё, что в их событиях вписано и перестало работать, и активировала бы обратно через addEventListener или каким угодно другим способом. Можно так сделать?

То есть:

Выделить код

Код:

// StartTag -  стартовый тег, от которого и ниже надо восстановить все события.
function AntiParanoics(StartTag) {

  var AllTags = StartTag.getElementsByTagName('*');

  // 1) Далее надо перебрать все события которые к тегу привязаны.

  // 2) Потом перепривязать все эти события через addEventListener.

}

Как мне перебрать все события которые к тегу привязаны?

Если такую функцию написать - будет большое благо, для всех кто пишет свои скрипты под Greasemonkey. Можно будет вставить вызов одной функции и не заниматься каждый раз геморроем.

Отсутствует

 

№10318-01-2010 02:15:59

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 3.6

Re: Greasemonkey

Что вообще за привилегии такие? Зачем они нужны?

У расширений и той части интерфейса, что написана на JavaScript, больше привилегий, чем у скриптов с посещаемых страниц, для них и нужны.

Вообще это мой скрипт, мой браузер. Всё моё. Какое вообще их дело, чего я со своей страничкой делаю? Если у них мания преследования, то я здесь причём?

При том, что у браузера много пользователей. Можно написать самому себе небезопасное расширение, но нельзя делать так, чтобы оно было у всех/многих.

Alert я привёл только для примера. Чтобы показать, что не работает.

Во-первых, там обертка вида

Выделить код

Код:

(function() { /* весь код */ })();

Во-вторых, просто так нельзя добавлять свои поля глобальному объекту страницы (который window) – только через прямое добавление полей к unsafeWindow.


Мне надо не конкретную функцию вручную вписывать. А универсальную функцию, которая бы перебирала все теги, искала все их события, и всё, что в их событиях вписано и перестало работать, и активировала бы обратно через addEventListener или каким угодно другим способом. Можно так сделать?

По-моему, это проблема подхода. В том смысле, что проще изменить подход, чем делать универсальный велосипед.
И хотелось бы конкретный пример.

В любом случае, если не нужны GM-функции (и, скорее всего, поддержка других браузеров, которые могут не уметь E4X, который в данном случае упрощает написание строковых данных), достаточно делать вот так:

Выделить код

Код:

location.href = "javascript: " + <![CDATA[

function xxx() {
    alert(0);
}
document.body.setAttribute("onclick", "xxx();");

]]>.toString();

Тогда скрипт будет выполняться полностью в контексте страницы.


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№10419-01-2010 07:48:23

Minor
Участник
 
Группа: Members
Зарегистрирован: 22-09-2006
Сообщений: 270
UA: Firefox 3.5

Re: Greasemonkey

Infocatcher

Infocatcher пишет

При том, что у браузера много пользователей. Можно написать самому себе небезопасное расширение, но нельзя делать так, чтобы оно было у всех/многих.

В чём оно небезопасное то? То, что на страничке матерное слово напишет? Текст он и есть текст.


Infocatcher пишет

По-моему, это проблема подхода. В том смысле, что проще изменить подход, чем делать универсальный велосипед.

Удобство в том, чтобы не менять своих привычек.


Infocatcher пишет

В любом случае, если не нужны GM-функции (и, скорее всего, поддержка других браузеров, которые могут не уметь E4X, который в данном случае упрощает написание строковых данных), достаточно делать вот так:

Как я уже говорил в прошлом постинге, мне нужен не alert, а функция, которая бы нашла ВСЁ, что поотключали эти больные манией преследования, и сама бы это включила бы обратно, через addEventListener, или любым другим способом.

Отсутствует

 

№10519-01-2010 10:02:54

Minor
Участник
 
Группа: Members
Зарегистрирован: 22-09-2006
Сообщений: 270
UA: Firefox 3.5

Re: Greasemonkey

Обнаружил, что если вызвать addEventListener несколько раз, то она добавит несколько вызовов на одну и туже функцию. Это как если бы при клике на ссылку, у вас бы открылось не одно, а сразу 10 одинаковых ссылок.

Прям маразм крепчает. Всё через ... сделано.

Существует ли фунция addEventListenerIfNeedit? Или addEventListenerOnce ? Или SetEventListener? Или FindAllEvents? Или RemoveAllEvents?

Или что-нибудь, что даст простое решение этой проблемы.

Отсутствует

 

№10619-01-2010 17:56:31

Inko7
Участник
 
Группа: Members
Зарегистрирован: 09-11-2009
Сообщений: 1008
UA: Firefox 3.5

Re: Greasemonkey

подскажите пожалуйста скрипт, с помощью которого можно просмотреть превью любой картинки подведя курсор мышки к ссылке на странице на эту картинку.

Отсутствует

 

№10719-01-2010 21:43:05

Maxone
Участник
 
Группа: Members
Зарегистрирован: 17-08-2009
Сообщений: 21
UA: Firefox 3.6

Re: Greasemonkey

Inko7 пишет

подскажите пожалуйста скрипт, с помощью которого можно просмотреть превью любой картинки подведя курсор мышки к ссылке на странице на эту картинку.

Попробуй это

Отсутствует

 

№10820-01-2010 00:02:29

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 3.6

Re: Greasemonkey

Minor пишет

Как я уже говорил в прошлом постинге, мне нужен не alert, а функция, которая бы нашла ВСЁ, что поотключали эти больные манией преследования, и сама бы это включила бы обратно, через addEventListener, или любым другим способом.

Я привел код, запускающий скрипты так, как если бы они находились на странице. В таком случае нету ограничений, накладываемых обертками, потому как их нету за отсутствием взаимодействия кода с разными привилегиями.
А без конкретного неработающего примера что-то сказать проблемно.

Прям маразм крепчает. Всё через ... сделано.

Так во всех браузерах сделано. Даже в IE, но там методы иначе называются и аргументы чуть другие.

Существует ли фунция addEventListenerIfNeedit? Или addEventListenerOnce ? Или SetEventListener? Или FindAllEvents? Или RemoveAllEvents?

Не существует, но можно написать.
А для перебирания добавленных обработчиков нужны привилегии отдельного расширения и Firefox 3.6 и выше. Eventbug вот работает.


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№10920-01-2010 01:38:27

Minor
Участник
 
Группа: Members
Зарегистрирован: 22-09-2006
Сообщений: 270
UA: Firefox 3.5

Re: Greasemonkey

Infocatcher

Infocatcher пишет

Не существует, но можно написать.

Я вот мучаюсь, никак не могу написать. Как мне сделать SetEventListener вместо AddEventListener?

Мой код:

Выделить код

Код:

function SetEventListener(MyTag1, Event1, Func1) {
    // Сначала надо удалить ВСЕ старые события. Как это сделать?
  MyTag1.removeEventListener(Event1, MyTag1.handle, true);
    // Дальше надо установить новое событие.
  ATag.addEventListener(Event1, Func1, false);
}

  // Вызов:
  MyTag1.addEventListener(MyTag1, "click", function() {MyFunc1()});

Не работает. Чего не так? Как исправить?

Infocatcher пишет

А для перебирания добавленных обработчиков нужны привилегии отдельного расширения и Firefox 3.6 и выше.

То есть, чтобы МНОЮ же добавленные строчкой кода выше обработчики перебрать нужны ещё какие-то дополнительные привилегии?

Отсутствует

 

№11020-01-2010 02:54:39

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 3.6

Re: Greasemonkey

Например, так:

Выделить код

Код:

var p = "__listeners";
function removeListener(node) {
    if(p in node) {
        var evt = node[p];
        node.removeEventListener(evt.type, evt.func, evt.useCapture);
    }
}
function addSingleListener(node, type, func, useCapture) {
    removeListener(node);
    node.addEventListener(type, func, useCapture);
    node[p] = { type: type, func: type, useCapture: useCapture };
}

Добавляемый обработчик запоминается в свойстве "__listeners", перед повторным добавлением сначала снимается старый обработчик.
При желании можно скрыть «хранилище» уже добавленных обработчиков, переместив его в отдельный массив, но тогда будет теряться производительность на проверку наличия узла, к которому требуется добавить обработчик, в этом массиве.

Minor пишет

То есть, чтобы МНОЮ же добавленные строчкой кода выше обработчики перебрать нужны ещё какие-то дополнительные привилегии?

Чтобы перебирать все обработчики, нужен доступ к nsIEventListenerService, получить который могут только расширения.
Свои обработчики можно запоминать при добавлении самостоятельно.

Добавлено 20-01-2010 02:58:30

Не работает. Чего не так? Как исправить?

ATag нигде не объявлено.
К тому же, для снятия обработчика нужно совпадение всех аргументов addEventListener/removeEventListener – должна быть ссылка на ту же самую функцию и должен совпадать третий аргумент, отвечающий за момент перехвата события.


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№11120-01-2010 06:05:50

Minor
Участник
 
Группа: Members
Зарегистрирован: 22-09-2006
Сообщений: 270
UA: Firefox 3.5

Re: Greasemonkey

Infocatcher

Infocatcher пишет

Например, так:

Заменил везде addEventListener на addSingleListener , но ничего не изменилось. Как появлялось несколько вызовов одной и той же функции при клике мышью, так и появляется.

Infocatcher пишет

При желании можно скрыть «хранилище» уже добавленных обработчиков, переместив его в отдельный массив

То есть функция addSingleListener одноразовая? Ну addEventListener - не одноразовая функция, и мне тоже нужна не одноразовая.

Infocatcher пишет

ATag нигде не объявлено.
К тому же, для снятия обработчика нужно совпадение всех аргументов addEventListener/removeEventListener – должна быть ссылка на ту же самую функцию и должен совпадать третий аргумент, отвечающий за момент перехвата события.

Вот как просто было написать a href=javascript:MyFunc() и никакого геморроя ...

Infocatcher пишет

тогда будет теряться производительность

Об этом надо забыть, пока не расстреляют всех этих разработчиков, которые высыпали такую кучу ... на простых скриптописателей.

Отсутствует

 

№11220-01-2010 09:55:39

Inko7
Участник
 
Группа: Members
Зарегистрирован: 09-11-2009
Сообщений: 1008
UA: Firefox 3.5

Re: Greasemonkey

Maxone
спасибо, хорошая вещица!
но все равно это немного не то, хочется увидеть маленькую превьюшку при наведении... :whistle:

Отсутствует

 

№11320-01-2010 17:24:12

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 3.6

Re: Greasemonkey

Minor пишет

Как появлялось несколько вызовов одной и той же функции при клике мышью, так и появляется.

Или там нельзя свои свойства добавлять...
Это помимо опечатки в «func: type» (должно быть func: func).

Minor пишет

Вот как просто было написать a href=javascript:MyFunc() и никакого геморроя ...

Я же сразу предложил попробовать засунуть весь код вовнутрь конструкции

Выделить код

Код:

location.href = "javascript: " + <![CDATA[
// некий код
]]>.toString();

Вот, вроде, работает:

Выделить код

Код:

var _nodes = [];
var _realNodes = [];
var _handlers = [];
function removeListener(node) {
    var indx = _realNodes.indexOf(node);
    if(indx != -1) {
        var evt = _handlers[indx];
        _nodes[indx].removeEventListener(evt.type, evt.func, evt.useCapture);
        _nodes.splice(indx, 1);
        _realNodes.splice(indx, 1);
        _handlers.splice(indx, 1);
    }
}
function addSingleListener(node, type, func, useCapture) {
    node.addEventListener(type, func, useCapture);
    var realNode = node.wrappedJSObject || node;
    removeListener(realNode);
    _nodes.push(node);
    _realNodes.push(realNode);
    _handlers.push({ type: type, func: func, useCapture: useCapture });
}

addSingleListener(document.body, "click", function(e) { alert(e.target); }, true);
addSingleListener(document.body, "click", function(e) { alert(e.target); }, true);
addSingleListener(document.body, "click", function(e) { alert(e.target); }, true);

Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№11421-01-2010 14:04:35

Minor
Участник
 
Группа: Members
Зарегистрирован: 22-09-2006
Сообщений: 270
UA: Firefox 3.5

Re: Greasemonkey

Infocatcher

Infocatcher пишет

Вот, вроде, работает:

Спасибо! Потестирую.

А есть какая-нибудь функция, чтобы можно было загрузить произвольную страничку в переменную? Чего-то никак найти не могу. Что-нибудь типа:

Выделить код

Код:

var s1 = LoadPage('http://google.com/index.html');
alert(s1);

Отсутствует

 

№11522-01-2010 01:26:00

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 3.6

Re: Greasemonkey

Minor пишет

А есть какая-нибудь функция, чтобы можно было загрузить произвольную страничку в переменную?

Если произвольную, то только GM_xmlhttpRequest.
А для страниц с того же домена можно использовать XMLHttpRequest (примеры).


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№11622-01-2010 09:32:09

Minor
Участник
 
Группа: Members
Зарегистрирован: 22-09-2006
Сообщений: 270
UA: Firefox 3.5

Re: Greasemonkey

Infocatcher

Infocatcher пишет

Если произвольную, то только GM_xmlhttpRequest.
А для страниц с того же домена можно использовать XMLHttpRequest (примеры).

Спасибо! :)

Почему-то удаётся получить responseText, но responseXML равен null.

Там по ссылке написано:

Note: If the server doesn't apply the text/xml Content-Type header, you can use overrideMimeType() to force XMLHttpRequest to parse it as XML anyway.

А как это сделать?

Отсутствует

 

№11722-01-2010 19:54:49

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 3.6

Re: Greasemonkey

Minor
Примерно так:

Выделить код

Код:

var req = new XMLHttpRequest();
req.open("GET", "http://...", false);
req.overrideMimeType("text/xml");
...

А для GM_xmlhttpRequest есть пример:

Выделить код

Код:

// Inject responseXML into existing Object if not present
    if (!response.responseXML)
      response.responseXML = new DOMParser().parseFromString(response.responseText, "text/xml");

Отредактировано Infocatcher (22-01-2010 19:55:07)


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№11827-01-2010 18:25:58

Artyon
Участник
 
Группа: Members
Зарегистрирован: 27-01-2010
Сообщений: 1
UA: Firefox 3.6

Re: Greasemonkey

Кто-нибудь может написать или сказать, где попросить, чтоб написали скрпит для history.qip.ru? Хочется иметь возможность просматривать большее количество сообщений на странице, сохранять всю историю себе в txt.

Отсутствует

 

№11929-01-2010 12:19:07

Minor
Участник
 
Группа: Members
Зарегистрирован: 22-09-2006
Сообщений: 270
UA: Firefox 3.6

Re: Greasemonkey

Infocatcher
Спасибо!

А можно сделать так, чтобы сначала загружался скрипт, а потом грузилась страничка?
Чтобы не надо было ждать пока страничка полностью загрузится. А чтобы по мере её загрузки скрипт выполнял свою работу.

Отсутствует

 

№12030-01-2010 13:02:21

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 3.6

Re: Greasemonkey

Minor пишет

А можно сделать так, чтобы сначала загружался скрипт, а потом грузилась страничка?
Чтобы не надо было ждать пока страничка полностью загрузится. А чтобы по мере её загрузки скрипт выполнял свою работу.

Greasemonkey срабатывает по событию DOMContentLoaded – то есть когда DOM-дерево полностью построено (но какие-нибудь картинки еще грузятся).
С очередностью сложно, не знаю. А для одновременности придется писать свое расширение и слушать какой-нибудь onProgressChange.


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№12131-01-2010 22:04:14

mr.Finch
Участник
 
Группа: Members
Зарегистрирован: 31-01-2010
Сообщений: 5
UA: Firefox 3.5

Re: Greasemonkey

Здравствуйте. А не поможете решить вопрос http://forum.mozilla-russia.org/viewtop … 11#p409111 Я просто сам в скриптах ни грамма не понимаю.
Соответственно сам написать не смогу. Да и вообще не понимаю что и куда писать. Расширение поставил поставил, а что делать не знаю.

Отсутствует

 

№12204-02-2010 20:15:50

Minor
Участник
 
Группа: Members
Зарегистрирован: 22-09-2006
Сообщений: 270
UA: Firefox 3.6

Re: Greasemonkey

Infocatcher

Infocatcher пишет

А для одновременности придется писать свое расширение и слушать какой-нибудь onProgressChange.

А существует простой способ переделать скрипт в расширение, которое запускает скрипт по onProgressChange?

Отсутствует

 

№12304-02-2010 23:56:32

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 3.6

Re: Greasemonkey

Minor пишет

А существует простой способ переделать скрипт в расширение, которое запускает скрипт по onProgressChange?

http://forum.mozilla-russia.org/viewtopic.php?id=39496
Готового нету, вроде как. Так что сначала нужно сделать сам механизм, позволяющий узнать момент начала загрузки. А запускать скрипты по какому-то событию легко (ну, если обойтись без интерфейса настроек) – сложность только в том, чтобы узнать момент наступления события.


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№12406-02-2010 18:28:52

Minor
Участник
 
Группа: Members
Зарегистрирован: 22-09-2006
Сообщений: 270
UA: Firefox 3.6

Re: Greasemonkey

Infocatcher
Но ведь AdBlock как-то блокирует элементы сразу, а не после загрузки страницы.

Ещё вопрос, можно руссифицировать скрипт без UTF-8?

Отсутствует

 

№12506-02-2010 18:58:42

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 3.6

Re: Greasemonkey

Minor пишет

Но ведь AdBlock как-то блокирует элементы сразу, а не после загрузки страницы.

Там другой механизм. Перед загрузкой любого объекта сначала опрашиваются все «слушатели» и если ни один из них не отменил запрос, то начинается загрузка. То есть, по идее, на этом этапе нельзя сказать, будет ли это что-то загружено.

Например, в BetterCache вот так:

Выделить код

Код:

var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
observerService.addObserver(httpObserver, "http-on-examine-response", false);

и

Выделить код

Код:

var httpObserver = {
  ...
  observe: function(subject, topic, data) {
          if (topic == "http-on-examine-response")
                {
                   ...
                }
  }
};

Только при этом еще нет объекта window страницы, чтобы выполнить код в его контексте. :|

P.S. А в Adblock Plus, насколько я понимаю,

Выделить код

Код:

//
    // nsIContentPolicy interface implementation
    //

    shouldLoad: function(contentType, contentLocation, requestOrigin, node, mimeTypeGuess, extra)
    {
    ...

Добавлено 06-02-2010 19:00:53

Ещё вопрос, можно руссифицировать скрипт без UTF-8?

Можно.

Выделить код

Код:

alert("\u041F\u0440\u0435\u0432\u0435\u0434\u0021");

После \u – hex-код символа.
Только это сомнительное удобство.


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]