Название: Изменение QtWebKit Отправлено: serg_hd от Июня 09, 2010, 13:58 Не уверен, что кто-либо сталкивался и будут мнения, но попытка как говорится...
Вобщем за любые предложения благодарен. Затея в том, что нужно сделать так, чтобы readonly-свойства некоторых объектов яваскрипта были доступны и на запись, например такое св-во как height объекта screen. Т.е. если, допустим, написать: Код то выведется всё равно истинная высота экрана, а не 555. А надо сделать чтобы вывело именно 555. Для всех объектов, где эти свойства также доступны на запись, принцип кода следующий (на примере HTMLElement). Есть .h и .cpp-файл объекта HTMLElement (он базовый, его наследуют много DOM-объектов, например DIV). В JSHTMLElement.h есть одна из функций (опять же, как пример, этих функций много), которая вызывается при выполнении такого кода яваскрипта: Код где "xxx" это id, например, DIV'а. Функция с++, которая выполняет собственно присвоение (декларация в JSHTMLElement.h): Код
Её инициализация в файле JSHTMLElement.cpp: Код
Чтобы "innerHTML" знал что он не только для чтения, но и для записи есть специальный шаблон, тоже в JSHTMLElement.cpp: Код
где setJSHTMLElementInnerHtml - вышеописанная функция. Если бы "innerHTML" был доступен только для чтения, то код был бы: Код
коим он и является для "height" объекта screen (первый элемент массива): Код И, что немаловажно, все остальные свойства объекта тоже только для чтения. Вся интересность в том, что если дописать свои методы для изменения значений свойств в классы где в HashTableValue-массиве уже присутствуют поля у которых доступна возможность изменения, то всё ок. Таким образом, например, добавил свой метод для изменения свойства document.referrer (на самом деле это св-во изначально было только для чтения). А вот screen.height никак не хочет реагировать на добавленный в этот массив метод. Сборка - нормально, js ошибок тоже не выдаёт, но мой метод после изменения на: Код
(сам метод - jsSetScreenHeight) всё равно почему-то не вызывается. Не могу найти ещё одну разницу между такими классами как JSScreen (где все поля только на чтение) и JSHTMLElement (где присутствуют поля и только на чтение, и также поля на чтение/запись) кроме задания такого шаблона элементов для HashTableValue-массива. Вобщем может кто-то знает где есть дока по вебкиту или что-то, что может помоч в вопросе? Находил все эти моменты сам, т.к. в инете ничего подобного не встретил((. Если кого заинтересовал такой контроль над яваскриптом, то прикрепил архив с 4-мя этими исходниками для сравнения. Название: Re: Изменение QtWebKit Отправлено: serg_hd от Июня 10, 2010, 02:39 готово, надо было отыскать ещё одну для присвоения нового значения функцию (всего получается 4 шага).
Название: Re: Изменение QtWebKit Отправлено: BigZ от Июня 10, 2010, 09:54 Очень возможно, что для height уже где-то зарегистрирован свой внутренний сеттер, поэтому до тебя управление не доходит.
Название: Re: Изменение QtWebKit Отправлено: arvitaly от Июля 18, 2012, 23:00 Цитировать Таким образом, например, добавил свой метод для изменения свойства document.referrer (на самом деле это св-во изначально было только для чтения). Покажи, пожалуйста, как |