2

PHPとJavascriptを使用してChromeに複数の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の1つが、整形式のDOMIDの要件に準拠していない可能性があります。

使用されている無効な文字を見つけるか、file_代わりに増分の数値IDフィールド(接頭辞のようなもの)を使用してください。

于 2013-03-09T15:30:42.063 に答える