好的,所以这是我的第一篇文章,所以我会尽量不要听到这里的声音......
我正在公司网站上开展一个项目,并且遇到一些视频问题。我通过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);
}
};
答案 0 :(得分:0)
这部分代码看起来可能不符合你的意图:
start = o.responseText.indexOf('<object');
end = o.responseText.indexOf('</object>', start);
el.innerHTML = o.responseText.substring(start, end);
此代码将包含标记,但不包括标记。我怀疑你试图获得两个标签或两个标签。
答案 1 :(得分:0)
我最初通过将来自AJAX调用的数据转储到对象标记中解决了这个问题,这解决了问题并完美地跨浏览器工作。
我们已经改变了我们为媒体提供服务的方式,所以我最终使用Vimeo来主持视频,这些视频非常简单,效果非常好。