0

このコードを使用して、画像の onclick コマンドで swf を再生しています。最初のクリックで、「flashMovie.Play は関数ではありません」というエラーが表示されます。2回目のクリックで動作し、その後は毎回動作します。これは、ページ内の他の要素との実行順序と競合していますか? 2 回目のクリックが正常に機能する最初のクリックで何が起こっていますか? (これは IE では機能しますが、Firefox では機能しません)

これにある種のタイミング遅延を入れると、おそらく助けになりますか? どうすればそれを試すことができるかについて何か提案はありますか?

<script language="JavaScript">
    function getFlashMovieObject(movieName)
    {
        if (window.document[movieName]) 
        {
            return window.document[movieName];
        }

        if (navigator.appName.indexOf("Microsoft Internet")==-1)
        {
            if (document.embeds && document.embeds[movieName])
                return document.embeds[movieName]; 
        }
        else // if (navigator.appName.indexOf("Microsoft Internet")!=-1)
        {
            return document.getElementById(movieName);
        }
    }

    function PlayFlashMovie(name)
    {
        var flashMovie=getFlashMovieObject(name);
        flashMovie.Play();     
    }
</script>
4

1 に答える 1

1

ボタンをクリックする前に Flash ムービーがロードされていない場合、この問題が発生する可能性があります。特定のタイミング遅延が良い考えだとは思いません。何を待っているのかを正確に把握してから、正しいハンドラーを実装することをお勧めします。

たとえば、何かを行う前にページ全体が読み込まれるのを待っていた場合、1 秒の遅延ではなく、次のdocument.onloadようにハンドラーを実装します。

document.onload = function () {
    //your code here
}

補足として、 SWFObjectの使用を検討することもできます。これにより、Flash と JavaScript に関する作業が大幅に容易になります。

于 2012-06-16T07:36:58.030 に答える