2

我很難讓Chrome使用PHP和Javascript生成多個JW播放器。只要提到它,Opera/Pale Moon/Firefox中的一切都可以正常工作。這裏的how it's supposed to look,這裏是how it renders in Chrome。有趣的是,當我將鼠標懸停在JW玩家所在的地方時,光標變爲「指針」,我可以真正播放該文件,只是玩家本身不可見。Chrome無法使用PHP/JS生成多個JW播放器

我有多個音頻文件,其所有信息(文件名,路徑,描述等)在MySQL數據庫中。因此,While循環爲數據庫中的每個文件生成單獨的DIV,並將其ID標記設置爲文件名稱值。下面的代碼(我已經離開了MySQL的查詢和其他一切,因爲這是麻煩的一部分):

<?php 
while ($row = mysql_fetch_array($query)){ 
    $fullpath = $row['fileFolder'].$row['fileName']; ?> 
    <div id="<?php echo $row['fileName']; ?>">Loading the player...</div> 
     <script type="text/javascript"> 
     var divName = <?php echo json_encode($row['fileName']); ?>; //since each DIV id has to be different 
     var fullpath = <?php echo json_encode($fullpath); ?>; 
      jwplayer(divName).setup({ 
       file: fullpath, 
       width:300, 
       height:30 
      }); 
     </script> 
    <?php 
     echo "<p class='descriptionAudio'>".$row['description']; 
     echo "<br>"; 
} ?> 

Chrome會顯示源相同工作的瀏覽器,而Chrome的開發者工具說:

There was an error while handling a listener: Error: SyntaxError: DOM Exception 12 function (a){n.playerReady(a);f.css.unblock()} jwplayer.js:3 
42 Uncaught Error: SyntaxError: DOM Exception 12 

順便說一句,當我手動設置DIV ID值時,一切正常。

+0

那麼,這個ID很可能是罪魁禍首。什麼樣的值可以'<?php echo $ row ['fileName']; ?>有? – 2013-03-09 14:43:55

+0

由於這些是音頻文件,它保存着諸如「14501_1_1.mp3」,「rdj201.mp3」等的值。也許我應該去掉'.mp3'位? – 2013-03-09 14:49:19

+0

@E應該沒問題:[DOM ID中允許使用哪些字符?](http://stackoverflow.com/q/1077084)中有任何重複項或其他更多禁止使用的字符?就像說'()| {}'.... – 2013-03-09 14:50:57

回答

1

你說,當你像顯示在該行中手動指定,而不是立足它們的文件名標識它的工作原理:

<div id="<?php echo $row['fileName']; ?>">Loading the player...</div> 

,使得它有可能是來自於數據庫中的ID之一沒有按」 t與requirements for a well-formed DOM ID.

一致請嘗試查找使用的無效字符,或者使用增量數字ID字段(前綴類似file_之類的內容)。