我的目标是评估QWebFrame中的JavaScript函数,并将其引用传递给多个QWebElements。
我已经能够参考单个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?