set_init_java_script

Все вопросы касающиеся использования
программы можно задать здесь
Ответить
cepB
Сообщения: 2
Зарегистрирован: 06 июн 2016, 21:54

set_init_java_script

Сообщение cepB » 06 июн 2016, 22:00

Делаю так
$browser->set_init_java_script("Date.prototype.getTimezoneOffset = function() { return -600; };");
$browser->navigate("моя страница");

на моей странице:

Код: Выделить всё

<script>
document.write((new Date).getTimezoneOffset());
</script>
выводит системное -180
если на странице сделать

Код: Выделить всё

<script>
Date.prototype.getTimezoneOffset = function() { return -600; };
document.write((new Date).getTimezoneOffset());
</script>
выводит -600

Баг или я неправильно понимаю работу этой функции?

Аватара пользователя
bigfozzy
Site Admin
Сообщения: 3047
Зарегистрирован: 28 июл 2008, 17:24
Контактная информация:

Re: set_init_java_script

Сообщение bigfozzy » 07 июн 2016, 10:43

в ie переопределять свойства объекта нужно через defineProperty:

например для navigator.AppName это так :

Код: Выделить всё

echo $browser->set_init_java_script("
function setAppName(window, appName) {if (window.navigator.appName != appName) {
        var appNameProp = { get: function () { return appName; } };
        try {
            Object.defineProperty(window.navigator, 'appName', appNameProp);
        } catch (e) {
            window.navigator = Object.create(navigator, {
                appName: appNameProp
            });
        }
    }
}
setAppName(window, 'new app name');")."<br>";

cepB
Сообщения: 2
Зарегистрирован: 06 июн 2016, 21:54

Re: set_init_java_script

Сообщение cepB » 09 июн 2016, 06:47

спасибо, разобрался!

Ответить