我使用可编辑的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);
谢谢
答案 0 :(得分:1)
如果是可编辑的网页,理想情况下,我们希望能够随时向QWebFrame
QWebElement
询问插入符号window.getSelection()
。然后我们可以用C ++代码调整这个元素。
不幸的是,根据文档,没有提供这样的方法。
无论如何,webkit的javascript中有一个解决方法,因为我们可以使用<p>
访问用户选择或插入符号在DOM中的位置。以下是一些代码,可以在选区上方找到最近的 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);
标记,并根据需要更改其样式:
{{1}}
您可能想要将它概括为将节点类型和样式作为参数,并可能稍微测试一下(我不是JS专家),但我相信原理是合理的。