如何在没有id和class的情况下获取当前元素?

时间:2013-07-10 09:55:17

标签: javascript qt execcommand

我使用可编辑的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);

谢谢

1 个答案:

答案 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专家),但我相信原理是合理的。