我在页面上加载了所有内容。 最后,我有这个脚本。
<script type="text/javascript">loadNewVideo('u1zgFlCw8Aw',0)</script>
它不起作用。 但如果我用它代替它,它就可以了。:
<input type="submit" onclick="loadNewVideo('u1zgFlCw8Aw',0);" >
在.JS文件中,这是函数:
function loadNewVideo(id, startSeconds) {
alert('In-the-function');
if (ytplayer) {
alert('Found-ytplayer');
ytplayer.loadVideoById(id, parseInt(startSeconds));
}
}
显然,“ytplayer”在第一个中是假的!??
答案 0 :(得分:9)
我不知道ytplayer
是什么,但我想这个问题与DOM没有完全加载有关。你试过这个吗?
<script type="text/javascript">
$(document).ready(function() {
loadNewVideo('u1zgFlCw8Aw', 0);
});
</script>
编辑:如果这不起作用,您必须向我们提供更多信息。正如蒂姆和彼得在评论中问你的问题时,你能告诉我们ytplayer
的定义在哪里以及它是什么?我假设它代表YouTube播放器,可能是在之后正在加载/定义你正在呼叫loadNewVideo
?
例如,如果上面的代码段位于文档中定义ytplayer
的部分之上,则在加载ytplayer
之前仍会调用此代码,具体取决于您加载它的方式。正如我所说,请提供更多信息。
答案 1 :(得分:4)
我想说这是因为DOM在那个阶段没有完全加载。你想挂钩正文onLoad事件,或使用jQuery来获取$(document).ready()钩子。
答案 2 :(得分:4)
我没有答案,但也许这可以帮助您找出 ytplayer 组件何时可以使用:
var startTimer = new Date().getTime();
function ytplayerReadyCheck() {
var ready = !!ytplayer;
if (!ready) {
window.setTimeout(ytplayerReadyCheck,50);
}
else {
var endTimer = new Date().getTime();
alert('ytplayer is now ready!\n\nWe waited '+(endTimer-startTimer)+' milliseconds for it');
loadNewVideo('u1zgFlCw8Aw', 0);
}
}
ytplayerReadyCheck();
当然,这几乎无法取代首先定义 ytplayer 的位置!也许它是在.js文件中定义的,在文档加载后动态加载?
我强烈建议您抓住Firebug,以便更轻松地调试此类内容。