0

swfobject.jsとjqueryを使用してYouTubeビデオをロードし、YouTubeRSSからいくつかのjsonデータを取得する2つの関数があります。

どちらの関数も非常によく似たコードを使用して、swfobject.jsで動画を埋め込みます。IE8をロードすると、ダイアログボックスが表示されて次のように表示されます。

Line: 4
Char: 5 
Error: not implemented
Code: 0

はいを押すと、すべてのビデオが読み込まれます。NOを押すと、3つのビデオのうち1つだけがロードされます。なぜそのうちの1つがロードされるのか、他はロードされないのかを知りたいだけです。IE8がここで気に入らない邪魔なコードはありますか?

「はい」または「いいえ」を押した場合に読み込まれるコードは次のとおりです。

function getVideo(videoID, divName){//Gets yt video for yt category posts
    var videoURL = videoID;
    var divID = divName+'-video';
    var width = 392; //only change this number
    var height = Math.floor(width*9/16);

    var params = { allowScriptAccess: "always" };
    var atts = { 'class': 'hmt-ytvideo' };
    swfobject.embedSWF("http://www.youtube.com/v/"+videoURL+"?enablejsapi=1&playerapiid=ytplayer&version=3",
                       divID, width, height, "8", null, null, params, atts);
}

<script type="text/javascript">
    var youtubeID = '<?php echo $urlYoutube; //pass the php var to js var?>';
    var divID = '<?php echo $divName; //pass the php var to js var?>';
    addLoadEvent(getVideo(youtubeID, divID));//Onload function to output video
</script>

yesを押すとロードされ、noを押すとロードされないコードは次のとおりです。

function getFirstSideVideo(){
    //First sidebar video, represented by the url 'start-index' value
    $j.getJSON(rssFeedURL, function(data) {
        $j.each(data.feed.entry, function(i, item) {
            var updated = item.updated;
            var urlLink = item['link'][4]['href'];
            var width = 315; //only change this number
            var height = width*9/16;

            //SWF object params
            var videoURL = urlLink.split('/uploads/')[1];
            var params = { allowScriptAccess: "always" };
            var atts = { 'class': 'hmt-ytvideo' };
            var divID = 'first-sidebar-video';

            //Output video with swf object
            swfobject.embedSWF("http://www.youtube.com/v/"+videoURL+"?enablejsapi=1&playerapiid=ytplayer&version=3",
                               divID, width, height, "8", null, null, params, atts);
        });
    });
}

<script type="text/javascript">//Onloads the function to output the video
    addLoadEvent(getFirstSideVideo);
</script>
4

1 に答える 1

1

このエラーは、addLoadEvent メソッドに関数を渡していないために発生しています。

addLoadEvent(getVideo(youtubeID, divID));

getVideo(youtubeID, divID)その関数から何も返されundefinedず、関数に渡されるため、このコードが実行されaddLoadEventます。

これは、IE 8 で自分に割り当てようとすると、undefinedそのwindow.onloadエラーが発生するということです。window.onload は addLoadEvent 関数によって内部的に行われます。

于 2012-08-11T04:09:53.910 に答える