Показать сообщение отдельно
  #1 (permalink)  
Старый 11.05.2013, 02:44
Новичок на форуме
Отправить личное сообщение для trent Посмотреть профиль Найти все сообщения от trent
 
Регистрация: 11.05.2013
Сообщений: 2

Перезапись стандартных объектов...
Здравствуйте уважаемые, нужна помощь...перерыл весь интернет, решение нашел, но не до конца оно, а как закончить идей уже нет (или знаний). Собственно суть в чем, требуется перезапись стандартных объектов, таких как
window.screen
navigator

и тд..а именно их свойств, то что они возвращают, по сути проблем нет если использовать
window.__defineGetter__("innerWidth", function () { return 'new width'; });

В Firefox и Chrome все отлично, так и другие свойства переписать можно, но мне нужно для движка WebKit (В комплекте к Qt идет) и вот тут начинаются жуткие проблемы и геморрой...там какой то урезанный движок яваскрипта, который не воспринимает гетеры...в таком виде.

Вообщем я нашел решение которое выглядит так:
var __originalNavigator = navigator;
navigator = new Object();
navigator.__proto__ = __originalNavigator;
navigator.__defineGetter__('userAgent', function () { return 'Custom'; });

И это то что нужно, но опять возникла проблема, все работает только со свойствами, если в объекте был какой то метод, он больше не работает...
navigator.javaEnabled()

приведет к ошибке, и тут я застрял, товарищи подскажите, существует ли способ таким образом работать/перезаписывать не только свойства но и все методы которые были в оригинальном объекте...Или хотя бы оставить методы рабочими, что то вроде полный клон оригинального объекта. Спасибо...
Ответить с цитированием