使用 javascript 检测控制台事件
Detect console event with javascript
我正在尝试使用 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 检测到这已被触发?
我在 Whosebug 上了解到您可以劫持控制台功能,如示例中所示,我在 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);
这里是关于那些 JS 位的简报:
try {
__flash__toXML(console.error("00:02:30:0596 TimeEvent.COMPLETE"));
} catch (e) {
"<exception>" + e + "</exception>";
}
__flash__toXML
函数是一种允许Flash程序通过JavaScript与网页通信的机制(简要说明here,无关文章)。该片段似乎是处理视频结束事件的较大部分的一部分。
奇怪的字符串看起来像是一段无用的代码,只是作为占位符存在,但我需要查看上下文才能更好地理解它。事实上,它什么都不做。
这是我对你问题的回答:
遗憾的是,您无法为控制台操作直接捕获任何事件。您需要将触发自定义事件的函数替换为您自己的函数,然后处理该事件。 This article explains the process excellently. You would need to modify the internal intercept
function to trigger an event on the main window, which you can handle in the traditional ways:
$(window).trigger("myapp.console.log");
注意:这可能不适用于内容脚本,但这是高级的并且取决于实现。如果您使用的是注入浏览器的东西,替换函数只会影响内容脚本的沙箱。
我正在尝试使用 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 检测到这已被触发?
我在 Whosebug 上了解到您可以劫持控制台功能,如示例中所示,我在 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);
这里是关于那些 JS 位的简报:
try {
__flash__toXML(console.error("00:02:30:0596 TimeEvent.COMPLETE"));
} catch (e) {
"<exception>" + e + "</exception>";
}
__flash__toXML
函数是一种允许Flash程序通过JavaScript与网页通信的机制(简要说明here,无关文章)。该片段似乎是处理视频结束事件的较大部分的一部分。
奇怪的字符串看起来像是一段无用的代码,只是作为占位符存在,但我需要查看上下文才能更好地理解它。事实上,它什么都不做。
这是我对你问题的回答:
遗憾的是,您无法为控制台操作直接捕获任何事件。您需要将触发自定义事件的函数替换为您自己的函数,然后处理该事件。 This article explains the process excellently. You would need to modify the internal intercept
function to trigger an event on the main window, which you can handle in the traditional ways:
$(window).trigger("myapp.console.log");
注意:这可能不适用于内容脚本,但这是高级的并且取决于实现。如果您使用的是注入浏览器的东西,替换函数只会影响内容脚本的沙箱。