Javascript 是否可以使用swfobject 2+在表单中嵌入SWF;在IE6+;?

Javascript 是否可以使用swfobject 2+在表单中嵌入SWF;在IE6+;?,javascript,flash,internet-explorer,dom,swfobject,Javascript,Flash,Internet Explorer,Dom,Swfobject,在使用swfobject.embedSwf将动态加载的SWF嵌入IE 6,7,8中的HTML表单时,我遇到了无数的问题 所有建议的手动解决方法都涉及从窗口对象创建对对象DOM元素的引用。例如: window[id] = document.getElementById(id); 其中id是swf对象dom元素的id。在我的例子中,我无法将window[id]设置为swf对象id,因为它尚未创建 swfobject中导致javascript错误的行是: el.outerHTML = '<ob

在使用swfobject.embedSwf将动态加载的SWF嵌入IE 6,7,8中的HTML表单时,我遇到了无数的问题

所有建议的手动解决方法都涉及从窗口对象创建对对象DOM元素的引用。例如:

window[id] = document.getElementById(id);
其中id是swf对象dom元素的id。在我的例子中,我无法将
window[id]
设置为swf对象id,因为它尚未创建

swfobject中导致javascript错误的行是:

el.outerHTML = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"' + att + '>' + par + '</object>';
<代码> E.OutHTHTML = ''+PAL+'; 当SWF电影设置其Javascript外部接口时,它尝试访问window[id]。因为这不存在,所以它失败了

如果我应用上面提到的解决方法并使用EmbeddesWF替换的DOM元素填充
window[id]
,它仍然会失败,因为它试图在div DOM元素而不是对象DOM元素上调用特定于Flash的方法


我发现这一问题自Flash 8和IE6以来一直没有得到解决,真是令人惊讶

我不知道你哪里出了问题。外部接口和SWFObject在IE6/7/8中工作得很好。见此(示例说明如下)

当你说“在表单中嵌入swf”时,你到底想做什么?如果要将swf嵌入到div中,那么div是在表单中还是在主体中的其他任何位置都不重要

这是一个

对于window[id],这是一种不推荐使用的方法,应该用document.getElementById(id)替换。很多旧的Flash教程/文档都说在使用ExternalInterface时使用window[id],但现在每个主流浏览器都支持W3C标准document.getElementbyId,因此可以安全地忽略这一建议。这包括IE6/7/8、Firefox、Safari/Webkit、Opera等

至于元素在试图找到它之前是否存在,这是一个时间问题。SWFObject在domready/onload中嵌入SWF,这意味着在加载SWF之前不应尝试调用ExternalInterface。您可以通过将正在编写的任何代码放在domready函数中来实现这一点:

swfobject.addDomLoadEvent(function (){
  //safe to execute code on your embedded SWF in here
});
SWFObject2.2有一个新的回调功能,允许您在嵌入SWF后立即调用函数。鲍比·范·德·斯卢伊斯有一个朋友。本节介绍了它的用法

希望有帮助

--菲利浦