【问题标题】:JavaScript Behavior InconsistencyJavaScript 行为不一致
【发布时间】:2013-12-17 07:36:12
【问题描述】:

我的 JavaScript 似乎有点问题:它在 JSFiddle 上按预期工作,但从本地 .html 文件打开时却没有。

这是我硬盘上的代码:

<html>

<head>
    <script type='text/javascript'>
        window.onPlayerLoad = function () {
            alert("test");
        };
    </script>
</head>

<body>
    <object bgcolor='#000000' data='http://www.twitch.tv/widgets/archive_embed_player.swf' height='378' id='clip_embed_player_flash' type='application/x-shockwave-flash' width='620'>
        <param name='movie' value='http://www.twitch.tv/widgets/archive_embed_player.swf'>
        <param name='allowScriptAccess' value='always'>
        <param name='allowNetworking' value='all'>
        <param name='allowFullScreen' value='true'>
        <param name='flashvars' value='title=IEM%2BSingapore&amp;channel=esltv_sc2&amp;auto_play=false&amp;start_volume=25&amp;archive_id=484099469&amp;initCallback=onPlayerLoad'>
    </object>
</body>

</html>

它在 JSFiddle 上:http://jsfiddle.net/77Bpa/

此代码的目的是加载 Twitch 播放器并在加载完成后调用一个函数。应该调用的函数是window.onPlayerLoad,通过initCallbackflashvar(见Twitch Player API)传递给flash对象。

因此,在 JSFiddle 上,警报按预期弹出,但是当我在本地打开文件时,没有这样的效果。 Firefox 和 Internet Explorer 都说 window.onPlayerLoad 存在,但没有被调用。

这个问题的原因可能是什么?

提前致谢。

【问题讨论】:

  • 它对我有用。也许您应该等待一秒钟,因为加载需要一两秒钟。
  • 我看到你已经将函数定义为 window.onPlayerLoad 但你的回调只是 onPlayerLoad。我会尽量让他们同意。
  • @lukasz1985,我确实等了几秒钟,播放器完成加载,但仍然没有警报框。 @bitfiddler:试过了,没用。这实际上是官方文档所说的(声明为window.onPlayerLoad,传递给对象为onPlayerLoad)。
  • 首先:尝试执行“var onPlayerLoad = ...”而不是“window.onPlayerLoad = ...”可能无济于事。其次,更有可能 - 使用“console.log(“test”)”之类的东西检查它,并在 JavaScript 调试时打开浏览器控制台观察网站负载。至少 - 尝试使用浏览器插入断点。回调可能仍在工作 - 但从浏览器中的本地文件系统加载文件可能会搞砸一些事情。
  • @lukasz1985,尝试在回调声明之前和回调内部设置断点。声明之前的那个被触发,但里面的那个没有。此外,将window.onPlayerLoad 替换为var onPlayerLoad 无效。

标签: javascript jsfiddle twitch


【解决方案1】:

正如我在评论中所述,问题是闪存没有调用回调,因为某些我不知道的原因 - 与请求它所使用的页面中使用的协议有关。使用 http:// over file:// 解决了这个问题。因此,简单地上传或使用本地主机向播放器请求页面可以正常工作,并且在将 html 文件从本地文件系统加载到浏览器时会失败。

【讨论】:

    猜你喜欢
    • 2018-03-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-05
    • 2020-12-21
    • 2018-08-27
    • 2016-01-13
    • 1970-01-01
    • 2019-04-02
    相关资源
    最近更新 更多