【问题标题】:Detect console event with javascript使用 javascript 检测控制台事件
【发布时间】:2015-06-30 00:16:37
【问题描述】:

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

【问题讨论】:

    标签: javascript jquery flash


    【解决方案1】:

    以下是关于这些 JS 位的简报:

    try {
        __flash__toXML(console.error("00:02:30:0596 TimeEvent.COMPLETE"));
    } catch (e) {
        "<exception>" + e + "</exception>";
    }
    

    __flash__toXML函数是一种允许Flash程序通过JavaScript与网页通信的机制(简述here,无关文章)。看起来 sn-p 是处理视频结束事件的较大部分的一部分。

    奇怪的细线似乎是一段无用的代码,只是作为占位符,但我需要查看上下文才能更好地理解它。事实上,它什么也不做。

    这是我对您问题的回答:

    很遗憾,您无法直接为控制台操作捕获任何事件。您需要将触发自定义事件的函数替换为您自己的函数,然后处理该事件。 This article 很好地解释了这个过程。您需要修改内部intercept 函数以触发主窗口上的事件,您可以在traditional ways 中处理该事件:

    $(window).trigger("myapp.console.log");
    

    注意:这可能不适用于内容脚本,但这是高级的并且取决于实施。如果你使用注入浏览器的东西,替换函数只会影响内容脚本的沙箱。

    【讨论】:

    • 我同意。 Try/Catch 块几乎看起来像“只是测试”代码,不是吗?无论如何,除非 Flash 应用程序被编程为在播放完成时发送一个 javascript 事件,否则它是不可能的(插件与其他 html 内容不在同一个域/上下文中)。他确实需要检查HBO视频页面的html源代码,也许有一些事件的线索?否则不会发生。 HBO 和 Netflix 并不想像 Youtube API 那样
    • 是的,它看起来根本不像生产代码。不过,似乎 Flash 可能正在发送一个触发它的事件,可能是可以使用 JS 捕获的。
    • 我从问题中了解到,控制台确实显示了错误消息,所以即使代码看起来有点奇怪,它仍然会在 javascript 中创建一个可捕获的事件,不是吗?这就是为什么我给出了关于劫持console.error函数的答案。那不行吗?
    • 控制台确实显示了消息,所以是的,有一些可以捕获的东西。您的想法是完全正确的,我只是将 OP 指向一篇文章,其描述和解决方案比我们任何人都提供的更好。我更新了我的答案,稍微澄清了“没有事件”的含义。
    【解决方案2】:

    我在 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);

    【讨论】:

    猜你喜欢
    • 2015-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-21
    • 2019-01-09
    • 1970-01-01
    • 2011-04-05
    相关资源
    最近更新 更多