Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #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()

приведет к ошибке, и тут я застрял, товарищи подскажите, существует ли способ таким образом работать/перезаписывать не только свойства но и все методы которые были в оригинальном объекте...Или хотя бы оставить методы рабочими, что то вроде полный клон оригинального объекта. Спасибо...
Ответить с цитированием
  #2 (permalink)  
Старый 11.05.2013, 03:43
Аватар для megaupload
Профессор
Отправить личное сообщение для megaupload Посмотреть профиль Найти все сообщения от megaupload
 
Регистрация: 18.01.2013
Сообщений: 1,098

var clone = Object.create(obj)

псевдоклон
Ответить с цитированием
  #3 (permalink)  
Старый 11.05.2013, 10:24
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от trent
Firefox и Chrome все отлично ... но мне нужно для движка WebKit
А ничего, что Chrome и работает на WebKit ?
Ответить с цитированием
  #4 (permalink)  
Старый 11.05.2013, 10:26
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Object.defineProperty(navigator, 'userAgent', {
    get: function() { return 'Custom' }
});
Ответить с цитированием
  #5 (permalink)  
Старый 11.05.2013, 12:48
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,589

Возвращать функцию, не?
__________________
29375, 35
Ответить с цитированием
  #6 (permalink)  
Старый 11.05.2013, 13:45
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

alert(navigator.javaEnabled())

_javaEnabled = navigator.javaEnabled.bind(navigator);

navigator.javaEnabled = function () { return ! _javaEnabled() }

alert(navigator.javaEnabled())
Ответить с цитированием
  #7 (permalink)  
Старый 12.05.2013, 22:27
Новичок на форуме
Отправить личное сообщение для trent Посмотреть профиль Найти все сообщения от trent
 
Регистрация: 11.05.2013
Сообщений: 2

Цитата:
А ничего, что Chrome и работает на WebKit ?
Да, но скриптовый движок, JavaScript, у хрома свой...от сюда и проблемы в QWebKit

Вообщем, ребят, спасибо за ответы, придется пересобирать QWebKit и фиксить самому, т.к все стандатное что работает везде, там не работает, в гетерах/сетерах ошибка...спасибо!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать выполнение ф-ции только для видимых объектов на экране? Randomizer jQuery 6 21.01.2013 16:06
Как найти точки соприкосновения двух объектов в RaphaelJS Fatalityap Библиотеки/Тулкиты/Фреймворки 3 03.08.2012 16:33
Запрет на наследование стандартных объектов lsync Общие вопросы Javascript 3 15.02.2011 19:03
Массив объектов или объект объектов vladlen Общие вопросы Javascript 19 30.10.2010 03:10
Быстрый поиск объектов Shasoft Общие вопросы Javascript 7 30.07.2009 05:28