chrome插件开发之:处理某些订单无法自动提交的问题

来源:互联网 发布:轩辕世界坐骑进阶数据4 编辑:程序博客网 时间:2024/05/15 06:28

(TM=天 猫)
嵌入js操作TM提交订单的界面的时候,还碰到一个很郁闷的问题:
不知道为什么,某些TM物品的购买,在订单界面的时候,无法获取订单界面的按钮的dom对象!而TB就完全没问题!
无法获取按钮,也就是意味着功能自动操作会停留在下订单的界面!这样子就悲剧了。
后来经过不断的调试,发现一个问题点:在某些TM的购买界面,chrome插件执行的时候,是无法获取对应的类对应的dom对象!而我单独在界面看,明明是这个类!!为什么插件执行的时候却是无法获取??
究竟什么问题呢?百思不得其姐。难道TM的开发人员还有办法可以屏蔽像chrome这些插件访问的这些dom的类?然后我逐步调试,慢慢定位了问题:应该是某些TM的下订单界面用了延迟加载的技术!导致,content_script执行的时候,这些元素的dom还没生成而无法获取!
定位问题之后,解决方法就很自然了:
先自动获取提交订单的按钮的dom对象;
如果可以获取,则执行自动购买的代码。
如果无法获取,则自动设定一个定时器,每100毫秒执行1次,一共执行100次(就是最多花10秒的时间等待TM的ui加载)。
每一次的循环,如果找到提交订单的按钮的dom对象,就clear定时器,再执行购买。
如果100次之后还没获取到,则提示用户:无法定位提交订单的按钮,请自己到下单界面提交订单!
用上这个逻辑之后,其实一般都没什么问题了。经过调试,一般循环1次就可以成功获取dom对象了!

0 0