javascript - IE8不会运行特定的JS函数,但会运行具有类似代码的另一个函数

标签 javascript jquery youtube swfobject unobtrusive-javascript

我有两个函数使用swfobject.js和jquery加载到youtube视频中,以从youtube rss中获取一些json数据。

这两个函数使用非常相似的代码将视频嵌入swfobject.js。我加载IE8,并在弹出对话框时说:

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

如果我单击"is",则将加载所有视频。如果我单击否,则仅加载三个视频之一。我只想知道为什么其中一个会加载而其他人不会加载。有一些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>

在我点击"is"时加载的代码,在我点击“否”时加载的代码如下:
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>

最佳答案

发生此错误是因为您没有将函数传递给addLoadEvent方法。
addLoadEvent(getVideo(youtubeID, divID));
此代码执行getVideo(youtubeID, divID),然后由于该函数未返回任何内容,因此undefined传递给addLoadEvent函数。

正是这种情况,在IE 8中,当您尝试将undefined分配给window.onload时,您现在遇到了该错误。 window.onload由addLoadEvent函数在内部完成。

关于javascript - IE8不会运行特定的JS函数,但会运行具有类似代码的另一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11911198/

相关文章:

javascript - 如何寻址从函数内部调用函数的元素?

javascript - Typescript/Vue - 当我为 Prop 声明默认对象时,如何访问 vuex 存储?

javascript - Javascript 忽略当前处于无限循环中的 setInterval

php - 在特定字段中未输入 X 秒后发送表单

javascript - 如何使用 Javascript 或 jQuery 在选项属性中添加 "selected"?

javascript - Youtube API 和 Web 音频 api

Android Youtube 应用提示圈

javascript - jQuery,必要时更新内容

jquery - 使用 jQuery 选择与另一个元素相同的 Div 中的某些元素类型

video - YouTube嵌入广告后无法与adblocker一起使用