1

我的目标是评估 QWebFrame 中的 JavaScript 函数,将它的引用传递给多个 QWebElement。

我已经能够参考单个 QWebElement 来评估框架中的 JavaScript:

QWebElement element1;
element1.evaluateJavaScript("return this.tagName;");

但是,我希望能够评估一个引用所有元素的脚本。例如,如果存在这样的方法,我会这样做:

QWebFrame frame;
QWebElement element1;
QWebElement element2;
QWebElement element3;
QList<QWebElement> elements;
elements << element1 << element2 << element3;

frame.evaluateJavaScriptWithElements("function(e1, e2, e3) {...}", elements);

一种可能的方法是遍历 QWebElements,并将每个元素放在 DOM 中的已知位置。然后,调用将所有元素作为参数传递给它的脚本。例如:

frame.evaluateJavaScript("document.myElements = [];");
element1.evaluateJavaScript("document.myElements.push(this);");
element2.evaluateJavaScript("document.myElements.push(this);");
element3.evaluateJavaScript("document.myElements.push(this);");
frame.evaluateJavaScript("(function(e1, e2, e3) {...}).apply(null, document.myElements);");

虽然上面的方法有效,但它很脏,因为它修改了 DOM(它将 myElements 数组添加到文档中)。

有没有人知道在 QWebFrame 中评估 JavaScript 并引用 DOM 中的 QWebElements 元素的方法,而不像我上面显示的那样修改 DOM?

4

0 回答 0