1

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

谢谢

4

1 回答 1

1

在可编辑网页的情况下,理想情况下,我们希望能够随时询问插入符号是QWebFrame什么QWebElement。然后我们可以用 C++ 代码调整这个元素。

不幸的是,根据文档,没有提供这种方法。

无论如何,webkit 的 javascript 中有一个解决方法,因为我们可以使用window.getSelection(). 下面是一些代码,可以找到<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 专家),但我相信这个原则是合理的。

于 2013-07-10T16:28:17.807 回答