Добрый вечер! Уже писал, но возможно не так выразился. Нужно сделать приложение на заказ, суть которого заключается в том, чтобы некоторые параметры, которые по запросу отсылается браузер я мог корректировать. Подробное ТЗ подготовлю по запросу. Порядок цен - 400+$ в зависимости от функционала.

Abricosio пишет

Добрый вечер! Уже писал, но возможно не так выразился. Нужно сделать приложение на заказ, суть которого заключается в том, чтобы некоторые параметры, которые по запросу отсылается браузер я мог корректировать. Речь идет о параметрах типа "разрешение экрана" и некоторые других. Подробное ТЗ подготовлю по запросу. Порядок цен - 400+$ в зависимости от функционала.

Вам нужно именно сделать или найти такое приложение? Что-то подобное, в принципе, уже существует. За 200 р. дам ответ :P.

Wernholt пишет
Abricosio пишет

Добрый вечер! Уже писал, но возможно не так выразился. Нужно сделать приложение на заказ, суть которого заключается в том, чтобы некоторые параметры, которые по запросу отсылается браузер я мог корректировать. Речь идет о параметрах типа "разрешение экрана" и некоторые других. Подробное ТЗ подготовлю по запросу. Порядок цен - 400+$ в зависимости от функционала.

Вам нужно именно сделать или найти такое приложение? Что-то подобное, в принципе, уже существует. За 200 р. дам ответ :P.

Чтобы существовала подмена именно такого параметра как разрешение экрана? Или это что-то вроде Modify Headers?

Abricosio пишет
Wernholt пишет

скрытый текст

Abricosio пишет

Добрый вечер! Уже писал, но возможно не так выразился. Нужно сделать приложение на заказ, суть которого заключается в том, чтобы некоторые параметры, которые по запросу отсылается браузер я мог корректировать. Речь идет о параметрах типа "разрешение экрана" и некоторые других. Подробное ТЗ подготовлю по запросу. Порядок цен - 400+$ в зависимости от функционала.


Вам нужно именно сделать или найти такое приложение? Что-то подобное, в принципе, уже существует. За 200 р. дам ответ :P.

Чтобы существовала подмена именно такого параметра как разрешение экрана? Или это что-то вроде Modify Headers?

Ну, это что-то вроде: меняется разрешение браузера. Будет показано, типа, как будет выглядеть страница при разных значения разрешения экрана посетителя страницы)...

Нет, это несколько не то, дополнение должно отвечать на запрос любого скрипта о разрешении экрана так, как я ему скажу отвечать.

:blush: Стесняюсь спросить...но для чего это нужно? :whiteflag:

Для работы в области тестирования

Интересно, кстати, какова последняя версия, в которой capability.policy.default.Screen.height ещё работало…
А дополнением вашу проблему боюсь что не решить.

А чем можно решить? Не готовы ли Вы взяться за это?

По-видимому, внесением изменений куда-то сюда и перекомпиляцией. Причём не очень понятно, как переключать «разрешение» на лету.

Ещё, наверное, можно организовать какой-нибудь перехват системных вызовов, но тут я тоже дилетант :).

перехват системных вызовов несколько не то) Хочется именно изменение информации внутри браузера)

Тема еще актуальна

возможно есть решение проблемы..

javascript запрашивает размер окна браузера, получает значения высот по x и y
эти параметры передаются другому скрипту через кнопку отправки формы (form, input-submit)
а другой скрипт принимает эти x и y и подстаивает сайт под эти разрешения.
на этапе перехода с одного на другой скрипт - перехватываем переменные x и y и изменяем их.. - допустим с 1024x768 на 800x600 -> следовательно второй скрипт думает что у нас разрешение экрана маленькое а не большое.

если я правильно описал технологию, могу подсказать ответ :)

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

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

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

Просим Shutnik поделиться с нами идеей :).

на самом деле, всё достаточно просто (сильно кастрированная версия) :)

Выделить код

Код:

var overrider = {

    load : function() {
            Components.classes["@mozilla.org/docloaderservice;1"].getService(Components.interfaces.nsIWebProgress).
                addProgressListener(overrider.listener, Components.interfaces.nsIWebProgress.NOTIFY_LOCATION);
    },

    listener : {

        QueryInterface : function(id)
        {
            if(id.equals(Components.interfaces.nsIWebProgressListener) ||
                    id.equals(Components.interfaces.nsISupportsWeakReference) ||
                    id.equals(Components.interfaces.nsISupports))
                return this;

            throw Components.results.NS_NOINTERFACE;
        },

        /* ловим загрузку страницы */

        onLocationChange : function(progress, request, uri)
        {
            if(["http", "https", "file"].indexOf(uri.scheme) == -1)
                return false;

            var win = progress.DOMWindow.window.wrappedJSObject, sandbox = new Components.utils.Sandbox(win),
                args = [overrider.get_num("screen_width"), overrider.get_str("flash_version")];
            sandbox.window = win;
            Components.utils.evalInSandbox("(" + overrider.override.toSource() + ")('" + args.join("', '") + "')", sandbox);

            return true;
        }

    },

    /* основной хак */

    override : function(screen_width, flash_version)
    {
        window.screen.__defineGetter__("width", function() {
            return screen_width;
        });

        // ...

        window.navigator.plugins["Shockwave Flash"].__defineGetter__("version", function() {
            return flash_version;
        });

        // ...
    }

}