О навигаторе:
http://spec.piramidin.com/clientref13/nav.htm

По ссылке даже, если изменить useragent [firefox] с помощью сриптов можно вытащить какой браузер.
http://whoer.net/extended

Пример того, как блокируется событие:

// ==UserScript==
// @name           BlockUnloadEvents
// @namespace      http://theaceoffire.8k.com/STOPTHEMADDNESS
// @description    This stops ANY AND ALL javascript that stops you from leaving a page. Inspired by this greasemonky script: http://userscripts.org/scripts/show/20781
// @include        *
// ==/UserScript==
(function() {
      unsafeWindow.onbeforeunload = null;

      unsafeWindow.onunload = null;

      //unsafeWindow.alert = null;

      //unsafeWindow.confirm = null;

      //unsafeWindow.prompt = null;

      //unsafeWindow.open = null; 
})();

Как по аналогии блокировать navigator? Пробовал так:

// ==UserScript==
// @name           Block
// @namespace      http://theaceoffire.8k.com/STOPTHEMADDNESS
// @description   
// @include        *
// ==/UserScript==
(function() {
      unsafeWindow.navigator = null;

      //unsafeWindow.alert = null;

      //unsafeWindow.confirm = null;

      //unsafeWindow.prompt = null;

      //unsafeWindow.open = null; 
})();

Вроде не работает.

okkamas_knife
Меня интересует конкретно этот случай. Хотя бы из любопытства.

Понятно.

Все свойства объекта navigator - только для чтения/read-only.

Как это можно обойти?

Тут минимум две проблемы – переписать свойства navigator'а до выполнения скриптов страницы и переписать их так, чтобы было не определить факт подмены, иначе можно будет отслеживать по факту блокировки (ведь блокирующих явно будет мало).

По запуску до скриптов страницы нужны исследования. Если и правда не обойтись без binding'ов, то binding может быть только один, так что, видимо, сломается RightToClick. Или надо динамически создавать расширяющий binding. Удастся ли при этом работать более, чем двум таким расширениям – неизвестно.

По незаметной подмене, возможно, может помочь https://developer.mozilla.org/en/JavaSc … ects/Proxy. А может и не помочь. :)
Вроде бы, автор ABP уже пытался: http://adblockplus.org/blog/do-javascri … n-wrappers, только в результате блокировка всплывающих окон была сделана иначе:

adblock_plus-2.0.3-sm+tb+fn+fx.xpi\modules\ContentPolicy.jsm

Выделить код

Код:

//
    // nsIObserver interface implementation
    //
    observe: function(subject, topic, data, additional)
    {
        switch (topic)
        {
            case "content-document-global-created":
            {
                if (!(subject instanceof Ci.nsIDOMWindow) || !subject.opener)
                    return;

                let uri = additional || Utils.makeURI(subject.location.href);
                if (!Policy.processNode(subject.opener, subject.opener.document, Policy.type.POPUP, uri, false))
                {
                    subject.stop();
                    Utils.runAsync(subject.close, subject);
                }


Далее про замену.
Из консоли ошибок:

Выделить код

Код:

Object.__defineGetter__.call(
    top.opener.content.navigator,
    "language",
    function() { return "foo"; }
);

Вроде, Ok – ошибок нет.

Выделить код

Код:

top.opener.content.navigator.language

Ошибка: attempt to run compile-and-go script on a cleared scope

При проверке со страницы в navigator.language по-прежнему исходное значение.


Так что есть довольно большая вероятность, что без изменений изнутри ничего не получится.
И потом все равно надо будет переопределить еще и toLocaleString():
new Date().toLocaleString(); // 4 Февраль 2012 г. 00:00:00
123456.789.toLocaleString(); // 123 456,789

Плюс браузер можно определить по тому, что он поддерживает. А это и CSS, и HTML5, и куча всего прочего.
Другое дело, что мало кому надо заниматься исследованиями по такому определению браузера. :)

okkamas_knife пишет

достаточно на страничке указать какую нибудь из стандартных локальных картинок  и потом скриптом проверить загрузилась она или нет.

Не, это уже исправили (если вообще когда-то можно было, не помню):

Попытка нарушения системы безопасности: содержимое «http://forum.mozilla-russia.org/viewtopic.php?pid=544357#p544357» не имеет права загружать file:///C:/Users/Public/Pictures/Sample%20Pictures/Chrysanthemum.jpg или ссылаться на него.