QT:Javascript执行缓慢(除非我登录到控制台)
QT: Javascript execution slow (unless I log to the console)
在QT 4.8.4中,我有一些任意的Javascript通过c++中的回调执行:
myWebElement->evaluateJavaScript( myScript );
现在,测试脚本是:
$(this).css('border', 'solid 10px #000')
这有效,但运行了几秒钟,并且 CPU 运行了 100%。
然后在测试时,我添加了";console.log('X')",同时调试脚本以查看精确挂断...它立即执行!
我发现只要我登录到控制台,脚本就会按预期高效工作。一旦我删除控制台日志记录,性能就会降低到爬行。是直接在脚本中登录,还是在C++中添加日志都没有关系。
有什么想法吗?我不想在我的程序中出现像下面这样的黑客。
myWebElement->evaluateJavaScript( myScript + "; console.log('X')" );
更新:
看起来此错误受页面上元素数量的影响。有一个表,在只有一两行的情况下,没有 CPU 运行。当有 600 行时,会有几秒钟的 CPU 使用率最大化。不过,只要最后有一个控制台.log命令,即使有 600 行,也不会有 CPU 运行。
(还在问题中添加了版本信息)
更新 2:
测试后,我不需要将任何东西传递到控制台中即可使黑客工作,我什至不需要调用日志。我可以附加";控制台;",它仍然可以立即工作。我还测试了在末尾添加 return 语句,但没有奏效。
问题是Qt正在评估Javascript中最后一个语句的返回值并将其转换为QVariant。它变得非常耗时,因为jQuery返回的是jQuery对象,Qt正在完整地评估该对象 - 并且是递归的。这也消耗了内存。
解决问题的不是控制台.log而是它返回的"null"值。我测试了一下,在脚本末尾装订"null"也有效。下面是更新的代码。
myWebElement->evaluateJavaScript( myScript + ";空");
相关文章:
- 在非我的页面上重新加载CSS
- 我尝试在登录脚本中使用ajax,但页面不会重定向
- 我的点击登录在网页上不起作用
- 突然间我可以't登录ASP.Net网站
- 如何获取运行我的 Web 应用程序的用户的 Windows 登录用户名
- 我的登录请求中缺少什么
- 隐藏我的管理员登录信息 HTML
- 如何制作登录表单以登录我的网络邮件
- 我怎样才能以非阻塞的方式处理数字
- jQuery / bubbling - 如何为非登录用户停止我的 JavaScript 代码
- 使用 PHP 和 Javascript 自动登录到我的网站时有什么问题
- 我需要一个地图服务,将显示鸟瞰图(用于内部使用非公众-登录所需)
- 对于Firebase简单登录,我必须登录两次才能注册
- VB 2013:自动登录从我的.设置问题
- 登录到我的网站与谷歌(获得access_token后该怎么做)
- Jquery库来计算用户登录到我的页面的次数
- 检查当前用户是否以管理员身份登录非Wordpress脚本
- 我'我希望用户看到当前登录到我的网站的所有其他人
- 需要一个解决方案,以阻止Safari浏览器阻止Facebook身份验证弹出框,允许用户登录到我的网站
- JS |从一个通过Facebook登录到我的网站的用户那里获得朋友的名字