2

我很难让 Chrome 使用 PHP 和 Javascript 生成多个 JW 播放器。顺便提一下,在 Opera/Pale Moon/Firefox 中一切正常。这是它的外观,这是它在 Chrome 中的呈现方式。有趣的是,当我将鼠标悬停在 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 

顺便说一句,当我手动设置 DIVs ID 值时,一切正常。

4

1 回答 1

1

您说当您手动指定 ID 而不是根据文件名指定 ID 时它会起作用,如下行所示:

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

这使得来自数据库的其中一个 ID 很可能不符合格式良好的 DOM ID 的要求。

尝试查找使用的无效字符,或使用增量的数字 ID 字段(以类似的前缀file_)代替。

于 2013-03-09T15:30:42.063 回答