我需要在脚本中覆盖一些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和类似平台的属性。为什么它不起作用以及如何覆盖它们?感谢。