我正在尝试使用 javascript 检测 HBO Go 电影何时完成。不幸的是,HBO Go 使用 Flash,而我没有 Flash 经验。
我注意到当电影结束时,Chrome javascript 控制台显示如下:
00:02:30:0596 TimeEvent.COMPLETE
(anonymous function) @ VM12786:1
我关注了 VM12786:1 并发现了这个:
try { __flash__toXML(console.error("00:02:30:0596 TimeEvent.COMPLETE")) ; } catch (e) { "<exception>" + e + "</exception>"; }
我不太清楚这两个是什么意思。有人可以简要解释一下吗?我已广泛搜索,但没有找到我理解的任何内容。
而且,有什么方法可以用 javascript 或 jQuery 检测到它已被触发吗?
最佳答案
这里简要介绍了这些 JS 位:
try {
__flash__toXML(console.error("00:02:30:0596 TimeEvent.COMPLETE"));
} catch (e) {
"<exception>" + e + "</exception>";
}
__flash__toXML
函数是一种允许Flash程序通过JavaScript与网页通信的机制(简要说明here,无关文章)。该片段似乎是处理视频结束事件的更大部分的一部分。
奇怪的字符串看起来像是一段无用的代码,只是作为占位符存在,但我需要查看上下文才能更好地理解它。事实上,它什么都不做。
这是我对您问题的回答:
不幸的是,您无法直接为控制台操作捕获任何事件。您需要将触发自定义事件的函数替换为您自己的函数,然后处理该事件。 This article很好地解释了这个过程。您需要修改内部 intercept
函数以触发主窗口上的事件,您可以在 traditional ways 中处理该事件:
$(window).trigger("myapp.console.log");
注意:这可能不适用于内容脚本,但这是高级的并且取决于实现。如果您使用的是注入(inject)浏览器的东西,替换函数只会影响内容脚本的沙箱。
关于javascript - 使用 javascript 检测控制台事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31105796/