用于IE8的角度嵌入式SWF

时间:2015-05-08 23:27:47

标签: javascript angularjs flash

我正在尝试使用angular嵌入一个SWF,我在我写的指令中使用了它。

'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="movie" value="{{ src }}" />',
        '<param name="allowscriptaccess" value="always" />',
        '<param name="allowfullscreen" value="true" />',
      '</object>'
    ].join(''),
    scope: {
      width:'@',
      height:'@',
      src: '@',
      path:'@',
      wmode:'@'
    },
    compile: function(elem, attrs, transcludeFn)
    {
      return function link (scope, element, attrs)
      {
        scope.$watch('path', function(path)
        {
          if (path)
          {
            if (!attrs.wmode) attrs.wmode = 'transparent';
            element.append('<param name="flashvars" value="path=' + attrs.path + '" />');
            element.append('<param name="wmode" value="' + attrs.wmode + '" />');
          }
        });
      };
    }
  };
}]);

上述指令在现代浏览器中运行良好。我似乎无法让它在IE8中工作。 SWF无法加载,我在控制台中收到一条SUPER DESCRIPTIVE错误:

  

[对象错误]描述:&#34;参数无效。&#34;消息:&#34;无效   。参数&#34;名称:&#34;错误&#34;号码:-2147024809

我找到了这个帖子:"Invalid argument" in IE 8 on jQuery.prepend() on flash objects

谈到IE不喜欢你在已经定义之后更改了对象标签。我一直在努力解决这个问题。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

如果是AngularJS 1.3或更高版本,问题可能是框架本身不支持IE8或更早版本:

http://jsfiddle.net/Twisty/xc4rs09m/