在 QT 4.8.4 中,我通过 c++ 中的回调执行了一些任意 Javascript:
myWebElement->evaluateJavaScript( myScript );
现在,测试脚本是:
$(this).css('border', 'solid 10px #000')
它起作用了,但是运行了几秒钟,并运行了 CPU 100%。
然后在测试时我添加了“;console.log('X')”,同时调试脚本以查明挂断......它立即执行!
我发现只要我登录到控制台,脚本就可以按预期有效地工作。一旦我删除控制台日志记录,性能就会变慢。我直接在脚本中登录,或者在C++中添加日志都没有关系。
有任何想法吗?我不想在我的程序中出现像下面这样的 hack。
myWebElement->evaluateJavaScript( myScript + "; console.log('X')" );
更新:
看起来此错误受页面上元素数量的影响。有一个表,在只有一两行的情况下,没有 CPU 启动。当有 600 行时,会有几秒钟的 CPU 使用率达到最大值。不过,只要最后有一个 console.log 命令,即使有 600 行,CPU 也不会启动。
(还在问题中添加了版本信息)
更新 2:
经过测试,我不需要向控制台传递任何东西来让黑客工作,我什至不需要调用 log. 我可以附加“;控制台;” 到脚本,它仍然会立即工作。我还测试了在末尾添加一个 return 语句,但没有奏效。