我正在尝试检测HBO Go电影何时使用javascript完成。不幸的是,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检测到这已被触发了吗?
答案 0 :(得分:2)
以下是关于这些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");
注意:这可能不适用于内容脚本,但它是高级的,取决于实现。如果您使用注入浏览器的内容,则替换该功能只会影响内容脚本的沙箱。
答案 1 :(得分:1)
我在StackOverflow上了解到你可以劫持控制台功能,就像我在console.error函数中添加警报的示例一样。
var conerr = console.error;
console.error = function()
{
alert("console error: " + arguments[0]); /* do stuff here */
return conerr.apply(console, arguments);
}
setTimeout(function() {console.error("00:02:30:0596 TimeEvent.COMPLETE");}, 1000);
&#13;