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