Название: QWebView переход по ссылке через JS
Отправлено: RedDog от Октябрь 11, 2010, 09:41
Необходимо, что бы автоматически QWebView переходил по ссылке: void MainWindow::onPageLoad (bool) { QWebFrame *frame = m_browser->page()->mainFrame(); QWebElementCollection collections = frame->findAllElements(":link"); QUuid uuid = QUuid::createUuid(); QString guid = uuid.toString().mid(1, uuid.toString().length() - 2); collections[10].setAttribute("id", guid);
QString script = QString("document.getElementById('%1').click()").arg(guid); collections[10].evaluateJavaScript(script); } не переходит. Что не так?
Название: Re: QWebView переход по ссылке через JS
Отправлено: marbius от Октябрь 12, 2010, 07:51
Доброго времени суток. А необходимо, чтобы происходила именно эмуляция клика по ссылке или же достаточно простого перехода? Если первое, то необходимо изменить Ваш скрипт на такой: var e = document.createEvent('HTMLEvents'); e.initEvent('click', true, true ); document.getElementById('%1').dispatchEvent(e);
Если второе, то можно сделать так: QWebFrame *frame = m_browser->page()->mainFrame(); QWebElementCollection collections = frame->findAllElements(":link"); m_browser->load(QUrl(collections[10].attribute("href")));
Название: Re: QWebView переход по ссылке через JS
Отправлено: RedDog от Октябрь 12, 2010, 08:57
Ну я примерно так и сделал: QString script = QString("var fireOnThis = document.getElementById('%1');\ if( document.createEvent ) {\ var evObj = document.createEvent('MouseEvents');\ evObj.initEvent( 'click', true, false );\ fireOnThis.dispatchEvent(evObj);\ } else if( document.createEventObject ) {\ fireOnThis.fireEvent('onclick');\ }").arg(guid); m_browser->page()->mainFrame()->evaluateJavaScript(script); работает, кликает.
|