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

How can get current element without id and class?

本文关键字:情况下 获取 元素 id      更新时间:2023-09-26

我使用一个可编辑的QWebView并在上面写一些文本。我想让文本光标指向当前元素,并做一些更改。例如,文本光标位于没有任何Id或类的<p>标记中。例如,我想得到这段文字,并将其显示设置为"无"。

如何获取没有任何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++代码调整这个元素。

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

无论如何,webkit的javascript中有一个变通方法,因为我们可以使用window.getSelection()访问用户选择或插入符号在DOM中的位置。以下是一些代码,可以在所选内容上方找到最近的<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专家),但我相信原理是合理的。