我有一个应用程序,使用HTML5视频和我们的客户仍然需要支持IE8 -格罗斯。
无论如何,我在AngularJS中提出了这个指令,用于在需要回闪时嵌入一个SWF对象。到目前为止,它还不错,但是我想看看是否有什么我可以做的来改进它。有人能看到这样的情况会失败吗?我使用Modernizr
来检测浏览器是否支持视频(Modernizr.video
)。如果没有,它就会倒转,我会加载这个指令。
该指令:
'use strict';
angular.module('flash-embed', []).directive('flashEmbed', [function()
{
return {
restrict: 'A',
replace: true,
template: ['',
'<object data="{{src}}" type="application/x-shockwave-flash">',
'<param name="allowscriptaccess" value="always" />',
'<param name="allowfullscreen" value="true" />',
'<param name="wmode" value="transparent" />',
'</object>'
].join(''),
scope: {
width: '@',
height: '@',
src: '@'
},
compile: function(elem, attrs, transcludeFn)
{
return function link (scope, element, attrs)
{
scope.$watch('src', function(src)
{
element.append('<param name="movie" value="' + src + '" />');
});
};
}
};
}]);
它的用法:
<div flash-embed src="testpreso/flash/preloader.swf" width="966" height="600"></div>
编辑5/8/2015更新
我在IE8中使用这个工具有困难。我的一个客户需要IE8的支持,booo。我在IE8中遇到的错误是:
[Object Error] description: "Invalid argument." message: "Invalid argument." name: "Error" number: -2147024809
这和我相信的对象标签有关。我找到了这条线索,它可能为这个问题提供了一些线索:https://stackoverflow.com/questions/9150938/invalid-argument-in-ie-8-on-jquery-prepend-on-flash-objects
如果我搞清楚了,我会更新的
发布于 2022-11-18 12:42:36
人们会希望这段代码能够被更新的技术所取代,特别是在微软不再支持IE8了和Adobe在2020年12月31日后不再支持Flash播放器的情况下。另外,安古拉束支持已于2022年1月正式结束.像VueJS这样的框架可以很好地替代AngularJS。
在电影源中添加param
标记的行有点长,而且它嵌套在几个函数中无助于以下事实:
Element.append(');
使用ES6特性模板文字可以稍微简化这一点:
element.append(`<param name="movie" value="${src}" />`);
https://codereview.stackexchange.com/questions/85522
复制相似问题