覆盖PhantomJS脚本

时间:2015-10-27 09:08:04

标签: javascript properties phantomjs override navigator

我需要在脚本中覆盖一些window.navigator属性来模拟不同的Navigator行为。

page.onInitialized = function() {
    page.evaluate(function() {

        (function() {
                window.screen = {
                   width: 480,
                   height: 800
                };

            var fake_navigator = {};
            for (var i in navigator) {
                fake_navigator[i] = navigator[i];
            }

            fake_navigator.javaEnabled = function() { return true; };
            fake_navigator.userAgent = 'test';
            fake_navigator.platform = 'Linux armv71';
            fake_navigator.vendor = 'Google Inc';
            fake_navigator.vendorSub = 'zozo';
            fake_navigator.onLine = true;
            window.navigator = fake_navigator;  

            window.navigator.__defineGetter__("vendorSub", function(){ return 'zozo1'; });

        })();
    });
};

但是当我加载页面并阅读例如window.navigator.vendorSub在javascript中它仍然包含错误的值(默认值为1)。而navigator.userAgent工作正常。 所以问题是覆盖onLine,connection.type和类似平台的属性。为什么它不起作用以及如何覆盖它们?感谢。

0 个答案:

没有答案