私の目的は、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 配列を追加する) ため、ダーティです。
上記のようにDOMを変更せずに、DOM内のQWebElementsの要素への参照を使用して、QWebFrame内のJavaScriptを評価する方法を知っている人はいますか?