背景:
我被授权“自动化”第三方站点,以便将“服务订单”推送到其中并监控这些请求的进度。
我尝试采用普通的“抓取”方法(使用PerlWWW::Mechanize
中的 , 等),但在预测站点中的 JavaScript 在各种情况下会做什么时HTML::Query
遇到了很多问题。如果我从运行 3rd 方站点的产品供应商那里获得支持,或者可以获得一些更好的产品业务规则文档,我打算回到这种方法。
为了避免再次猜测 JavaScript 代码并节省大量时间,我最终采取了一种方法,即在专用 VM 上加载 Firefox 中的第 3 方站点,然后在其中执行“特权”代码(即:nsI*)站点的上下文来“驱动”和“抓取”站点。
我目前正在使用nsIWebProgressListener
/ DOMContentLoaded
(当我已经有对 ChromeWindow 的引用时),并且nsIWindowMediator
从调用 window+tab 枚举setInterval
来查找新窗口和选项卡(当我无法预测它们打开时,也无法获得对其 DOMWindow 对象的引用由于第 3 方 JavaScript 的作用域)。
问题:
我怎样才能在现在(以及将来)由 3rd 方站点的 JavaScript 打开的每个窗口/选项卡中自动安装一个“挂钩”?在这种情况下,整个 Firefox UI的“窗口观察器”nsI~
界面将非常有用。