我有一个Flash播放器,可以在点击缩略图时加载新电影或任何带有项目类别的元素。适用于FF,但不适用于Chrome或IE。需要帮助搞清楚错误:'未捕获TypeError:无法调用方法'loadItem'未定义'
这是标题中的脚本:
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script type="text/javascript">
var isFlashReady = false;
function flashReady(){isFlashReady = true;}
function showRegistration(){alert("showRegistration");}
function registrationCompleted(){thisMovie("player1").registrationCompleted();}
function loadItem(id){thisMovie("player1").loadItem(id);}
function thisMovie(movieName){if (navigator.appName.indexOf("Microsoft") != -1){return document.getElementById(movieName);}else{return document[movieName];}}
</script>
<script type="text/javascript">
jQuery(document).ready(
function() {jQuery(".item").click(function () { loadItem(this.id); });}
);
</script>
来自页面的代码包括视频播放器和图片列表
<object data="player.swf" name="player1" id="player1" type="application/x-shockwave-flash" align="middle" width="853" height="480" >
<param value="player.swf" name="movie"> <!--was missing this var which IE 6,7,8 needed -->
<param value="high" name="quality">
<param value="#333333" name="bgcolor">
<param value="true" name="play">
<param value="true" name="loop">
<param value="window" name="wmode">
<param value="showall" name="scale">
<param value="true" name="menu">
<param value="true" name="devicefont">
<param value="" name="salign">
<param value="always" name="allowscriptaccess">
<param value="true" name="allowFullScreen">
<param value="xml=reach.xml&defaultId=1" name="flashvars">
Install Adobe Flash and revisit to watch video content. <!--This is alternate content, took it out and Chrome worked fine -->
</object>
<div style="float:left;">
<p><strong>Space Track</strong></p>
<ul>
<li><img src="images/spacetrack1a.jpg" class="item" id="1" title="Space Track Video #1" alt="Space Track Video #1" width="120" height="70" /></li>
<li><img src="images/spacetrack2.jpg" class="item" id="2" title="Space Track Video #2" alt="Space Track Video #2" width="120" height="70" /></li>
<li><img src="images/spacetrack3.jpg" class="item" id="3" title="Space Track Video #3" alt="Space Track Video #3" width="120" height="70" /></li>
<li><img src="images/spacetrack4.jpg" class="item" id="4" title="Space Track Video #4" alt="Space Track Video #4" width="120" height="70" /></li>
</ul>
</div>
答案 0 :(得分:0)
您的错误是由此行引起的
function loadItem(id){thisMovie("player1").loadItem(id);}
thisMovie("player1")
似乎返回了一个DOM元素,然后你试图在它上面调用loadItem(id);
..这是没有意义的,因为loadItem()
只会坐在那里自称。 Idk你正在尝试做什么,但这应该有助于你解决它
修改对评论的回复:抱歉,我仍然没有按照您对document.getElementById('player1').loadItem(id);
所做的工作,如加载电影或如何在FF中工作。对我来说似乎是一个无限的递归循环。
如果你使你的图像的id等于他们的swf文件名(减去扩展名),你可以做这样的事情:
function loadItem(id){
var movieObj = thisMovie("player1");
movieObj.setAttribute('data', id + '.swf');
}
function thisMovie(movieName){
if (navigator.appName.indexOf("Microsoft") != -1){
return document.getElementById(movieName);}else{return document[movieName];
}
}
我从未见过像文档一样使用文档对象,所以Idk如果它适用于else
中的thisMovie()
条件,但我相信你可以进行调整;)< / p>
答案 1 :(得分:0)
您确定loadItem(this.id)
的函数调用不应该是
loadItem($(this).attr('id'))
?
答案 2 :(得分:0)
我错过了IE 6,7,8为了加载电影而需要的电影变量。所有现代浏览器都从对象标签加载电影,但我很愚蠢并忘记了电影变量。请参阅原始来源中的注释代码添加。