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

标签 javascript qt execcommand

我使用可编辑的QWebView并在上面写一些文字。我想获取文本光标指向它的当前元素并进行一些更改。例如文本光标位于 <p> 中没有任何 ID 或类的标签。例如,我想获取此段落并将其显示设置为无。

如何获取当前没有任何 Id 或 class 的元素?

我尝试过: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 专家),但我相信原理是合理的。

关于javascript - 如何在没有 id 和 class 的情况下获取当前元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17567623/

相关文章:

qt - QtCreator : kit-specific precompiler macro definitions

javascript - 范围内的 execCommand

execCommand 中 'paste as plain text` 的 Javascript 技巧

javascript - 如何在页面刷新或移动到另一个 HTML 子网站时保持 ToogleClass() 状态?

javascript - Node JSON https 请求变得未定义

javascript - 背景滚动内容并坚持到顶部

c++ - 在 Qt 中使用 QRubberBand 裁剪图像

javascript - 何时向原型(prototype)添加成员?

java - JNI - Android 上的警报对话框

javascript - document.execCommand ("paste")不起作用 - 返回 false