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 値を手動で設定すると、すべてがうまく機能します。