1

まず第一に、ここに示されている豊富な知識に対して、このコミュニティ全体に感謝する必要があります! PHP と Javascript を学び始めて以来、これらのページで見つけた答えは非常に価値がありました。実は、ここで検索しただけでは解決できなかった問題に出くわしたのはこれが初めてです。これはかなり具体的な問題ですが、答えが私以外にも役立つことを願っています。

以下のコードは、はるかに大きなドキュメントの要約バージョンですが、本質的な問題にまで煮詰めました。残念ながら、問題を説明するにはビデオ ファイルが必要です。私はそれについて何をすべきかわからない。関心のあるテスターが、ローカル サーバー上のメディア ファイルを代用できることを願っています。

ここでの目標は、ムービーを再生し、その下に 3 つの画像を表示することです。ムービーのソースは PHP で指定していますが、タイミングを制御する必要があるため、Javascript 関数を呼び出してムービーを再生しています。ここでの以前の多くの回答のおかげで、PHP から Javascript に変数値を渡す方法を学びました。(表の最初の行の 2 番目のセルに正しいファイル名が表示されているため、これだけの作業が行われていることがわかります。)

問題は、正しい値があるにもかかわらず、newSource 引数がタグの一部として評価されないことです。他の 1 人のユーザーが Safari 5.1 で同様の問題を報告しました ( Safari 5.1 では <video> ソースが $_SESSION 変数を検出することはできません) が、Chrome と Firefox でも同じ問題が発生します。

コードは次のとおりです。

<?php session_start();?>

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
        <script>

            function ShowMovie(newSource){
                 document.getElementById("Movie").innerHTML="<video id='video1'><source=" + newSource + "type='video/mp4'></video>";
                 //document.getElementById("Movie").innerHTML="<video id='video1' source=" + newSource + "type='video/mp4'>"; this doesn't work either'
                 document.getElementById("Para").innerHTML="<p>" + newSource + "</p>";
            }

            function DisplayPics(){
              document.getElementById("Pic1").innerHTML="<img src=<? echo $_SESSION['pic1']?>>";
              document.getElementById("Pic2").innerHTML="<img src=<? echo $_SESSION['pic2']?>>";
              document.getElementById("Pic3").innerHTML="<img src=<? echo $_SESSION['pic3']?>>";
            }

        </script>
    </head>
    <body>
        <table>
            <tr>
                <td id="Movie">

                </td>
                <td id="Para">

                </td>
            </tr>
            <tr>
                <td id="Pic1">

                </td>
                <td id="Pic2">

                </td>
                <td id="Pic3">

                </td>
            </tr>
        </table>

        <?php 
            AssignPics();
            AssignMovie("Movies/foobar.mp4");//Testers: replace this file path with any playable video.    
        ?>
        <script>DisplayPics();</script>

        <?php

        function AssignPics(){
            $_SESSION['pic1'] = "Pictures/a.jpg";//Testers: replace these image sources with any images.    
            $_SESSION['pic2'] = "Pictures/b.jpg";
            $_SESSION['pic3'] = "Pictures/c.jpg";
        }

        function AssignMovie($file){
            echo "<script>ShowMovie(" . "'" . $file . "'" . ");</script>";
            //echo "<script>ShowMovieName(" . $file . ");</script>"; //Without the added single quotes, it throws "Uncaught ReferenceError: Movies not defined."
        }
        ?>


    </body>
</html>

Thanks very much for whatever help you can give!
4

1 に答える 1

0

「ソース」属性を引用符で囲む必要があります...これも省略しました-ソースタグのソースの実際の属性は「src」です...したがって、この行の場合:

document.getElementById("Movie").innerHTML="<video id='video1'><source=" + newSource + "type='video/mp4'></video>";

次のように変更します。

document.getElementById("Movie").innerHTML="<video id='video1'><source src='" + newSource + "' type='video/mp4'></video>";
于 2013-05-22T23:38:51.553 に答える