IE,YUI和Flash的问题

时间:2011-07-14 15:58:37

标签: yui panel lightbox flash pop

好的,所以这是我的第一篇文章,所以我会尽量不要听到这里的声音......

我正在公司网站上开展一个项目,并且遇到一些视频问题。我通过AJAX调用抓取一些视频并将其放入YUI面板以创建我自己的视频灯箱。在所有浏览器中一切都运行正常,当然除了IE(8,因为我们只是放弃了支持7)。我可以让面板打开并显示flash播放器,但它不会加载.flv或播放器控件。就像我说的,在所有其他浏览器中都很好。这是我正在使用的主要脚本:

/**
 * Function to lazy load, then show the video panel with the content of the link passed in inside the panel
 */
var showVideoPanel = function(e, linkEl){
    Event.preventDefault(e);    

    if(!YAHOO.env.getVersion("videoPanel")) {           
        var successHandler = function() {               
            videoPanel = new COUNTRY.widget.VideoPanel("videoPanel", " ");              
            showVideoPanel(e, linkEl);
        };

        //this is not likely to go off (404 is not considered an error)
        var failureHandler = function() {
            window.location = linkEl.href;
            return;
        };

        COUNTRY.loadComponent("videoPanel", successHandler, failureHandler);
    } 
    else {              
        COUNTRY.util.Ajax.getRemoteContent('GET', linkEl.href, videoPanel.body, {
            success: function(o){                           
                var start, end, el;
                el = Dom.get(videoPanel.body);
                start = o.responseText.indexOf('<object');
                end = o.responseText.indexOf('</object>', start);                   
                el.innerHTML = o.responseText.substring(start, end);
            },
            failure: function(o){       
                el = Dom.get(videoPanel.body);          
                el.innerHTML = "The requested content is currently unavailable. Please try again later.";
            }                       
        }); 
        var bod = Dom.get(videoPanel.body);
        COUNTRY.util.Flash.flashControl(bod.getElementsByTagName("FORM")[0]);


        videoPanel.show(linkEl);        
    }
};

2 个答案:

答案 0 :(得分:0)

这部分代码看起来可能不符合你的意图:

start = o.responseText.indexOf('<object');
end = o.responseText.indexOf('</object>', start);                   
el.innerHTML = o.responseText.substring(start, end);

此代码将包含标记,但不包括标记。我怀疑你试图获得两个标签或两个标签。

答案 1 :(得分:0)

我最初通过将来自AJAX调用的数据转储到对象标记中解决了这个问题,这解决了问题并完美地跨浏览器工作。

我们已经改变了我们为媒体提供服务的方式,所以我最终使用Vimeo来主持视频,这些视频非常简单,效果非常好。