QT 4.8.4 では、c++ のコールバックを介して任意の Javascript を実行しています。
myWebElement->evaluateJavaScript( myScript );
さて、テストスクリプトは次のとおりです。
$(this).css('border', 'solid 10px #000')
これは機能しましたが、実行に数秒かかり、CPU 100%を使い果たしました。
次に、テスト中に「; console.log('X')」を追加し、スクリプトをデバッグしてハングアップを特定しました...そしてすぐに実行されました!
コンソールにログを記録している限り、スクリプトは期待どおりに効率的に機能することがわかりました。コンソール ログを削除するとすぐに、パフォーマンスがクロールに低下します。スクリプトに直接ログインするか、C++ でログを追加するかは問題ではありません。
何か案は?以下のようなハックが私のプログラムに浮かんでいるのは嫌です。
myWebElement->evaluateJavaScript( myScript + "; console.log('X')" );
アップデート:
このバグは、ページ上の要素の数の影響を受けているようです。テーブルがあり、行が 1 つまたは 2 つしかない場合、CPU の起動はありません。600 行になると、数秒間 CPU 使用率が上限に達します。繰り返しますが、最後に console.log コマンドがあるとすぐに、600 行でも CPU の起動はありません。
(質問にバージョン情報も追加しました)
更新 2:
テスト後、ハックを機能させるためにコンソールに何も渡す必要はありません。ログを呼び出す必要さえありません。「;コンソール;」を追加できます スクリプトに追加しても、すぐに機能します。最後に return ステートメントを追加することもテストしましたが、うまくいきませんでした。