2011-10-19 97 views
0

我有一個Flash Player,在單擊縮略圖時加載新電影或帶有類的項目的任何元素。在FF中可以正常工作,但不能在Chrome或IE中使用。需要幫助找出錯誤:「遺漏的類型錯誤:不能調用方法'的未定義」Uncaught TypeError:無法調用未定義的方法'loadItem'

這裏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> 

enter image description here

+1

死海龜!!!!! –

+0

復活龜3,你已經死了粉碎機! – McPace

+0

哇!好的問題是備用閃存內容句子。拿出來,它完美的作品。我認爲那是最愚蠢的事情。 – McPace

回答

0

你的錯誤是由該行造成

function loadItem(id){thisMovie("player1").loadItem(id);} 

thisMovie("player1")似乎返回一個DOM元素,然後你想呼籲it..which 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它是否會爲在thisMovie()else條件下工作,但我敢肯定,你可以進行調整;)

+0

Hey碎紙機,喜歡這個名字,並且你正在幫助一隻烏龜。我不確定我是否遵守。 thisMovie IS引用dom中的哪個Flash對象應該加載新電影。如果我在頁面上有兩個玩家,則需要引用哪個玩家接聽電話。 – McPace

+0

但你確實幫助我意識到我沒有解釋圖像的ID傳遞給閃存,所以它知道搶電影2,並播放你的播放列表。哦,ID 3剛剛通過,加載電影3等。所以這個錯誤通常意味着當它試圖加載時找不到資源,Chrome和IE發現哪些不能拋出這個錯誤?爲什麼FF找到它? – McPace

+0

@McPace我看到了,但是爲什麼回想一下播放器DOM對象上的'loadItem()'?我編輯了我的答案,我希望它更有幫助 –

0

你肯定的loadItem(this.id)你的函數調用不應該是 loadItem($(this).attr('id'))

+0

如果我單獨抓取那個元素的id,它會是,但我已經在使用一個item類引用對象,所以它知道這是什麼。 – McPace

0

我錯過了爲了加載電影而需要IE 6,7,8的電影變量。所有現代瀏覽器都從對象標籤加載電影,但我很笨,忘了電影變量。請參閱原始來源中的註釋代碼添加。

相關問題