Название: [РЕШЕНО] QWebView + javascript + выполнить функцию Отправлено: bosfor от Февраль 01, 2012, 18:23 Ребят подскажите : Есть не6обходимость загрузить яваскрипт и юзать его функцию, но самое непонятное для меня (на форуме не нашел), ему надо передать бинарный параметр (QByteArray) и получить строковый (QString) результат.
Как загрузить и вызвать скрипт понятно- но как передать бинарные данные и получить ответ неясно ... ??? P.S: Может кто подскажет что получьше, но данный скрип должен AMF (Action Message Format) формат данных декодировать в строковое значение, других вариантов в сети не нашел. Тут буржуи пишут http://developer.qt.nokia.com/forums/viewthread/206 (http://developer.qt.nokia.com/forums/viewthread/206) Название: Re: QWebView + javascript + выполнить функцию Отправлено: Bepec от Февраль 01, 2012, 19:27 Код: // имеем класс TST Название: Re: QWebView + javascript + выполнить функцию Отправлено: bosfor от Февраль 01, 2012, 22:40 Код: tmp = "var divs=document.getElementsByTagName('li'); " что-то этот момент не уловил, как связаны первая и вторая строки ? может это подойдет ? void QWebView::setContent ( const QByteArray & data, const QString & mimeType = QString(), const QUrl & baseUrl = QUrl() ) вот только неясно как должны выглядеть бинарные данные внутри страницы если их туда поместить туда до выполнения скрипта ? Название: Re: QWebView + javascript + выполнить функцию Отправлено: Bepec от Февраль 02, 2012, 09:36 Связаны кучей кода,который я вырезал.
Твой класс может вызываться из ЯваСкрипта, ты это понимаешь, не? :) А вызванная функция может вернуть в Java любые данные, которые ты можешь поместить в переменную. аля Код: QString TST::allo() Название: Re: QWebView + javascript + выполнить функцию Отправлено: bosfor от Февраль 02, 2012, 12:08 что не получается, делаю так:
обозначаю свой класс который будет возвращать бинарные данные Код: class MyArray далее удостоверившись что страница со скриптом загруженна делаю так: Код: MyArray myArray; вернуться должен был размер массива но возращается путо Код: QVariant(, ) а вот сам ява скрипт Код: <script type="text/javascript"> пробовал с текстом тоже не идет Код:
Название: Re: QWebView + javascript + выполнить функцию Отправлено: Bepec от Февраль 02, 2012, 22:57 Прикрепи давай архивчик с html'ом с нужной тебе функцией и функцией вывода строки.
PS в моей программе строки/числа спокойно вводятся в скрипт. update: поглядел ещё раз на твой код. qDebug и qVariant дружат помоему только с четким указанием типа. Просто QVariant будет всегда выводить пустую строку. Название: Re: QWebView + javascript + выполнить функцию Отправлено: bosfor от Февраль 03, 2012, 09:36 попробовал модифицировать базовый пример formextractor.pro
передаю ему QByteArray а на явескрипте вывожу длинну массива и все как не феноменально работает ??? я делал все также кроме как в рабочем примере класс центрального виджета описывается отдельно а потом подгужается .... но не думаю что это должно являться причиной.. Прямо магия какаето я уже под микроскопом сравнивал файлы проекта - зацепки нет ..... Название: Re: QWebView + javascript + выполнить функцию Отправлено: Bepec от Февраль 03, 2012, 09:39 Выложи свою функцию ввода (или что она там у тебя делает, принимает, выводит.)
Или же выложи свой проект, тогда поковыряю палочкой и скажу, где не работает, а где поправить. PS если уж проект коммерческий, али делиться не хошь, выложи на файлообменник с паролем, а мне ссыль в Личные Сообщения кинь. ^^ Название: Re: QWebView + javascript + выполнить функцию Отправлено: bosfor от Февраль 03, 2012, 10:55 domtraversal - не работает
formextractor - работает Название: Re: QWebView + javascript + выполнить функцию Отправлено: Bepec от Февраль 03, 2012, 13:04 *В ужасе бьётся об стенку*
Что за проект? Как это работало? Куда это сувать? Примерно такие у меня сейчас мысли, глядя на код твоего нерабочего проекта... Название: Re: QWebView + javascript + выполнить функцию Отправлено: bosfor от Февраль 03, 2012, 13:09 *В ужасе бьётся об стенку* Что за проект? Как это работало? Куда это сувать? Примерно такие у меня сейчас мысли, глядя на код твоего нерабочего проекта... вопросы к разработчикам QT ))) это ведь их детище из примеров я только немного своего добавил )) подозреваю что подвох от принципа наследования class Window : public QMainWindow, private Ui::Window но может я не прав ... Название: Re: QWebView + javascript + выполнить функцию Отправлено: Bepec от Февраль 03, 2012, 13:13 Это не от разработчиков Qt, это скорее кувалдой подогнанный квадрат, который по идее должен быть круглым :D
Название: Re: QWebView + javascript + выполнить функцию Отправлено: bosfor от Февраль 03, 2012, 13:16 Это не от разработчиков Qt, это скорее кувалдой подогнанный квадрат, который по идее должен быть круглым :D приведи хоть несколько моментов обработки кувалдой )) очень интересно где все началось не в ту сторону .......и это я его еще привел к первоначальному варианту оставив только неработающие моменты сути вопраса )) да, там я дублирую работу в видемом и скрытом QWebView, так как в дальнейшем мне надо будет использовать функцию декодирования в фоне Название: Re: QWebView + javascript + выполнить функцию Отправлено: Bepec от Февраль 03, 2012, 13:24 Как вариант у тебя были проблемы, из-за public: функции возврата QByteArray.
Функции, вызываемые в Java должны быть слотами (public slots:). У тебя в проекте какая-то мешанина из стилей и функционала. Например тот же QNetworkAccess никуда не девшийся. Сделал свой, чистенький, рабочий проект. Смотри, понимай, пользуйся Название: Re: QWebView + javascript + выполнить функцию Отправлено: bosfor от Февраль 03, 2012, 13:27 У тебя в проекте какая-то мешанина из стилей и функционала. Например тот же QNetworkAccess никуда не девшийся. да заметил позже этот участок - забыл вырезать, в реальности я его использую для перехвата запросов хоть и на скорую руку чтобы не заморачиваться, но код рабочий у этого класса Название: Re: QWebView + javascript + выполнить функцию Отправлено: bosfor от Февраль 03, 2012, 13:33 Как вариант у тебя были проблемы, из-за public: функции возврата QByteArray. Функции, вызываемые в Java должны быть слотами (public slots:). вот за этот момент отдельное СПАСИБО !!! поправил и заработало !!! Название: Re: QWebView + javascript + выполнить функцию Отправлено: Bepec от Февраль 03, 2012, 13:34 Оно работает и ладно, сказал индийский программист, поглаживая седую шевелюру ;)
PS пробуй, смотри. Неясно - пиши. update: пожалуйста. Но всё же мини совет, не стоит особо путать динамическое и статическое создание GUI. А то там у тя чёрт де что ;) Название: Re: QWebView + javascript + выполнить функцию Отправлено: bosfor от Февраль 03, 2012, 13:38 update: пожалуйста. Но всё же мини совет, не стоит особо путать динамическое и статическое создание GUI. А то там у тя чёрт де что ;) чтобы враги не поняли ))) Согласен что выглядит неважно код, да дебагер не хочет с такими объявлениями работать....начал переделывать проект на чистую основу )) когда смотрю исходники QT я еще в большем ужасе ))) Название: Re: QWebView + javascript + выполнить функцию Отправлено: Bepec от Февраль 03, 2012, 13:39 Измени первое сообщение. В поле Тема: добавь [РЕШЕНО].
|