【发布时间】: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&channel=esltv_sc2&auto_play=false&start_volume=25&archive_id=484099469&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