chrome插件開發之:處理某些訂單無法自動提交的問題

(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對象了!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章