0

最初のコンテキストでは、phpforeachループで取得したビデオサムネイルを表示する非常に基本的な画像カルーセルがあります。ユーザーがサムネイルをクリックすると、対応するビデオが上記のdivに読み込まれます。カルーセルはうまく機能しますが、それをdivに送信するonclickイベントは機能しません。

実行したい次のコード行があり、コードエディタに正しいと表示されますが、ブラウザで実行すると、sytaxエラー「UnexpectedToken」が表示され、コードが機能しなくなります。

  echo "<li><a href='javascript:void(0);' onClick='setVideo(" .$youtube_link. "," .$type. "," .$video_title. "," .$custom_description. "," .$postURL. ");'>";
  print_thumbnail($featured_thumb,"thumbnail",$youtube_link);
  echo "</a></li>";

そのため、代わりに次のコードを使用しました。

  echo '<li><a href="javascript:void(0);" onClick="setVideo(\'' . $youtube_link . '\', \'yt\',\'' . $video_title . '\',\'' . $custom_description . '\',\'' . $postURL . '\' );">';
  print_thumbnail($featured_thumb,"thumbnail",$youtube_link);
  echo "</a></li>";
  } ?>

このコードは機能し、ビデオをdivに入れますが、特定のビデオサムネイルをクリックすると、「予期しない識別子」エラーが返され、機能しません。サムネイルごとに送信されるデータを確認しましたが、一部のサムネイルでは機能するが他のサムネイルでは機能しないようにするために、各サムネイルの間に違いは見られませんでした。エラーも一貫しており、毎回同じ投稿にとどまります。だから私の質問は、JQueryからのエラーなのか、それともJQueryに送信されるデータのエラーなのかということです。

これは対応するJQuery関数です。

  function setVideo(videoID, playerType, postTitle, postExcerpt, postURL ){
  width = 720;
  height = 405;
  if( playerType == 'yt' ) {
  $('#video_player').replaceWith("<iframe id='video_player' class='youtube-player' type='text/html' width='"+ width +"' height='"+ height +"' src='http://www.youtube.com/embed/" + videoID + "?hd=1&html5=1&rel=0&autohide=1&showinfo=0' frameborder='0' ></iframe>");
   }
  }
4

2 に答える 2

0

それのほとんどを理解しました。このコードを使用すると、$ custom_descriptionに入るデータに、jqueryを介して一重引用符(')が含まれているため、エラーが発生することに気付きました。

 echo '<li><a href="javascript:void(0);" onClick="setVideo(\'' . $youtube_link . '\', \'yt\',\'' . $video_title . '\',\'' . $custom_description . '\',\'' . $postURL . '\' );">';
  print_thumbnail($featured_thumb,"thumbnail",$youtube_link);
  echo "</a></li>";
  } ?>

私は次のような単純なstr_replaceを実行しました:

$string_desc = str_replace("'","\\'", $custom_description);
$string_title = str_replace("'","\\'", $video_title);

echo '<li><a href="javascript:void(0);" onClick="setVideo(\'' . $youtube_link . '\', \'yt\', 
\'' . $string_title . '\',\'' . $string_desc . '\',\'' . $postURL . '\' );">';
print_thumbnail($featured_thumb,"thumbnail",$youtube_link); $video_title;
echo "</a></li>";

そして、すべてが機能します

于 2012-12-19T16:53:13.137 に答える
0

私はjqVideoBoxでテストを行い、youtube、metacafe、google、iFilmからのビデオをテストしました...

<a title="Youtube example." class="vidbox" href="http://www.youtube.com/v/NRH2jEyiiLo&hl=en&fs=1&rel=0"><img alt="Youtube" style="width: 130px;" src="http://i2.ytimg.com/vi/NRH2jEyiiLo/default.jpg"/></a>
<a title="Metacafe example." class="vidbox" href="http://www.metacafe.com/watch/386357/teach_magic_be_magician_money_magic/"><img alt="Metacafe" style="width: 130px;" src="http://images.metacafe.com/thumb/386357/2767198/4/catalog_top_item5/0/teach_magic_be_magician_money_magic.jpg"/></a>
<a title="Google Video example." class="vidbox" href="http://video.google.com/videoplay?docid=1811233136844420765"><img alt="Google Video" style="width: 130px;" src="http://video.google.com/ThumbnailServer2?app=vss&amp;contentid=d53e613f82f74c96&amp;offsetms=50000&amp;itag=w160&amp;lang=en&amp;sigh=QGtXRNh3rW4hfa6DSQSFtfOimno"/></a>
<a title="iFilm example." class="vidbox" href="http://www.ifilm.com/video/2783985"><img alt="iFilm" style="width: 130px;" src="http://img4.ifilmpro.com/resize/image/stills/films/resize/istd/2783985.jpg?width=130"/></a>

この関数を呼び出すだけで、ビデオが開きます!!

$(document).ready(
function()
{
    $(".vidbox").jqvideobox();
}

);

そして私は3つのjsをインポートしました

<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/swfobject.js"></script>
<script type="text/javascript" src="js/jqvideobox.js"></script>

このライブラリを試して、何が起こるかを確認できます...

于 2012-12-18T16:23:14.313 に答える