使用javascript检测控制台事件

时间:2015-06-28 23:20:52

标签: javascript jquery flash

我正在尝试检测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检测到这已被触发了吗?

2 个答案:

答案 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函数中添加警报的示例一样。

&#13;
&#13;
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;
&#13;
&#13;