我使用可编辑的QWebView
并在上面写一些文字。我想获取文本光标指向它的当前元素并进行一些更改。例如,文本光标位于<p>
标记中,没有任何ID或类。我想获得此段并将其显示设置为例如。
如何获得没有任何ID或类的当前元素?
我尝试了:this.style.display="none"
无效,但是当我尝试document.getElementsByTagName('p')[0].style.display="none"
时有效。而且我不知道如何获取当前元素。
我只想使用javascript而不是jquery来做到这一点。而且没有任何点击或其他。这可能吗?我怎样才能做到这一点?
execCommand如何工作?例如execCommand justifyRight如何获取当前元素?
这是我的代码:
QWebFrame *frame = p->webView->page()->mainFrame();
QString js = QString("this.style.display='none'");
frame->evaluateJavaScript(js);
谢谢
最佳答案
对于可编辑的网页,理想情况下,我们希望能够随时询问QWebFrame
插入符号中的QWebElement
。然后,我们可以使用C ++代码调整此元素。
不幸的是,根据文档,没有提供这种方法。
无论如何,由于我们可以使用window.getSelection()
访问用户选择或插入符号在DOM中的位置,因此Webkit的javascript中有一种解决方法。以下是一些代码,可在选择项上方找到最接近的<p>
标记,并根据需要更改其样式:
QString js=
" var node = window.getSelection().getRangeAt(0).startContainer;"
" while (node) {"
" if (node.nodeName.toUpperCase()=='P') {"
" node.style.display='none';"
" break;"
" }"
" node=node.parentNode;"
" }" ;
QVariant res = page()->mainFrame()->evaluateJavaScript(js);
您可能需要对其进行概括,以将节点类型和样式作为参数,并可能对其进行一些测试(我不是JS专家),但是我相信原理是合理的。