0

JavaScript(jQuery)

function display_youtube(new_url) {
    $('#movie_url').removeAttr('value');
    $('#embed_url').removeAttr('src');
    $(document).ready(function() {
        $('#movie_url').attr('value', new_url);
        $('#embed_url').attr('src', new_url);
        $('#shade').css('display', 'block');
        $('#youtube_player').css('display', 'block');
        $('#exit_youtube').css('display', 'block');
    });
}

HTML

<object width="720" height="480">
<param id="movie_url" name="movie" value="http://www.youtube.com/v/_eaToCSn7yU?f=user_uploads&app=youtube_gdata&autoplay=0" />
<param name="allowFullScreen" value="true" />
<param name="allowscriptaccess" value="always" />
<embed id="embed_url" src="http://www.youtube.com/v/_eaToCSn7yU?f=user_uploads&app=youtube_gdata&autoplay=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="720" height="480" />
</object>

ハイパーリンク

<a href="javascript:display_youtube('http://www.youtube.com/v/_eaToCSn7yU?f=user_uploads&app=youtube_gdata&autoplay=1');">Click Here for Fun!</a>

私が行ったことは、ユーザーチャンネルの動画用にYouTubeのAPIを解析したことです。

上記のハイパーリンクはphpで生成され、上記のJavaScript関数をトリガーし、ID「movie_url」と「embed_url」に含まれる属性からURLを交換することで、FFの場合と同じように機能しますが、IEでは.cssコマンドのみが実行されます。

私の推測では、IEは私がPARAMとEMBEDにIDを割り当てることを好まないでしょう。

4

1 に答える 1

0

修正しました!私の新しいコードは以下のとおりです。問題は、IEによるFlashパラメーターの処理でした(オブジェクトのパラメーターの非同期更新を実行しませんでした)。ビデオを埋め込んでいて、オブジェクトとして処理していなかったため、FFでは正常に機能していました。

新しいJavascript

function display_youtube(new_url) {
    $('#object_url').replaceWith('<param id="object_url" name="movie" value="' +new_url+ '" />');
    $('#embed_url').replaceWith('<embed id="embed_url" src="' +new_url+ '" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="720" height="480" />');
    $('#shade').css('display', 'block');
    $('#youtube_player').css('display', 'block');
    $('#exit_youtube').css('display', 'block');
}
function exit_youtube() {
    $('#object_url').replaceWith('<param id="object_url" />');
    $('#embed_url').replaceWith('<embed id="embed_url" />');
    $('#shade').css('display', 'none');
    $('#youtube_player').css('display', 'none');
    $('#exit_youtube').css('display', 'none');
}

新しいHTML

<object width="720" height="480">
    <param id="object_url" />
    <param name="allowFullScreen" value="true" />
    <param name="allowscriptaccess" value="always" />
    <embed id="embed_url" />
</object>

ここでの秘訣は、IEがオブジェクトに対してアクションを実行する前に、jQueryからの命令に依存するように強制することでした。これにより、IEは最初からパラメーターをキャッシュできなくなります。FTW!

于 2010-04-27T20:40:45.290 に答える