这个问题更像是一般编码练习题。我正在为Google Chrome编写扩展程序,在查看项目页面时从Amazon.com收集ASIN号码。
设计要求:
查看包含id = ASIN的元素的页面时,捕获ASIN。 (例如来自http://www.amazon.com/gp/product/B004FYJFNA/?tag=justinreinhart-20的B004FYJFNA)
当用户更改平台时(例如,从Playstation 3更改为Xbox 360),检测到发生了更改并捕获新的ASIN值。
我有一个"内容脚本",injection.js,注入每个亚马逊页面,可以成功执行#1要求。
我遇到的问题是#2。我无法有效地检测到ASIN值的更改。要么代码没有触发,要么我选择一个可以触发~100次的元素。我不知道如何有效地做到这一点。
失败示例:
// (A) This fires ~100 times when user changes platforms,
// and also fires during mouseover events.
// Unacceptable but it does work.
$("#handleBuy").bind('DOMNodeRemoved', OnProductChange);
// (B) This doesn't fire at all. I have a few guesses why but no certainties.
$("#ASIN").on('change', OnProductChange);
喋喋不休: 当用户点击时切换产品平台似乎撕裂了亚马逊页面并且它破坏了我尝试的任何事件绑定。 (我相信该元素已被删除并重新插入 - 而不仅仅是更改。)我不太了解javascript以熟练地将这些大规模的DOM更改考虑在内。
感谢您的帮助和知识。