我正在尝试将一些新的聚合物自定义元素集成到我正在处理的项目中,其中一个要求是应用可以将视频上传到第三方服务(Wistia)。这个第三方服务提供了一个使用flash的上传小部件,但是聚合物提供的platformJS polyfill正在影响创建的flash对象并打破小部件。我不是一个Flash开发人员,并且不太了解浏览器中的flash是如何工作的,但是如果有人知道另一种实例化flash对象的方式,那么它将与platformjs polyfill一起使用或者有选择地排除polyfill我真的很感激这种见解。
Flash对象初始化代码(来自http://static.wistia.com/javascripts/upload_widget.js)
containerElement = document。
getElementById(this.settings.flash_container_id);
containerElement.innerHTML =
['<object id="', this.movieName, '" type="application/x-shockwave-flash" data="', this.settings.flash_url, '" width="', this.settings.flash_width, '" height="', this.settings.flash_height, '" style="-moz-user-focus: ignore;">',
'<param name="movie" value="', this.settings.flash_url, '" />',
'<param name="bgcolor" value="', this.settings.flash_color, '" />',
'<param name="quality" value="high" />',
'<param name="menu" value="false" />',
'<param name="wmode" value="', this.settings.flash_wmode ,'" />',
'<param name="allowScriptAccess" value="always" />',
'<param name="flashvars" value="' + this.getFlashVars() + '" />',
'</object>'].join("");
现在的问题是,当没有使用platformjs polyfill对象实例化时,可以像这样调用flash函数
var movieElement = document.getElementById(FLASH_OBJECT_ELEMENT_ID);
movieElement[functionName]()
对此问题的任何见解将不胜感激, 感谢
答案 0 :(得分:1)
正如您在上面的评论中注意到的那样,当阴影dom没有本地提供时,您使用查询选择器获得的元素为wrapped,以便填充阴影dom的封装。这些包裹的元素不会暴露包裹物体上的所有东西。为了在有和没有本机阴影dom实现的浏览器中工作,请尝试:
var movieElement = unwrap(document.getElementById(FLASH_OBJECT_ELEMENT_ID));
movieElement[functionName]();