将 Flash 对象嵌入 html 的 Javascript 不起作用

Posted

技术标签:

【中文标题】将 Flash 对象嵌入 html 的 Javascript 不起作用【英文标题】:Javascript to embed flash object in html not working 【发布时间】:2012-08-09 04:17:15 【问题描述】:

我正在尝试使用 javascript 显示一些嵌入 SWF 对象的 html

脚本在没有 SWF 对象的情况下工作正常。但是,当对象包含在插入到 div 中的 html 中时,脚本不再运行。

如果有人可以建议修复或发现错误,我将不胜感激。

这里是 jsfiddle。

http://jsfiddle.net/UJpQ4/

代码(同jsfiddle):

html:

<a href="javascript:void(0)" onclick="takeProfilePic('0');">Show Flash</a>
<a href="javascript:void(0)" onclick="takeProfilePic('1');">Do not show flash</a>
<tr><td colspan=2 align="center"><div id="takepic"></div>

javascript:

function takeProfilePic(type) 
//   alert(type);
if (type==0)
  
   var target = 'takepic';
   var photo = '<tr><td colspan=2 align="center">hello</td></tr>';
document.getElementById(target).innerHTML = photo;
return false;
  
    else if (type==1) 
        var target = 'takepic';
   var photo = '<tr><td colspan=2 align="center"><a href="stepthree.php"><img src="images/collapse.gif" border=0></a></td></tr><tr><td colspan=2 align="center">NO FLASH OBJECT HERE</td></tr>';
  document.getElementById(target).innerHTML = photo;
return false;      
         

【问题讨论】:

以后,请在您的帖子中包含所有相关代码,并且不要仅包含指向 jsFiddle 的链接。您的帖子应该独立于任何其他资源;考虑一下如果 jsFiddle 将来出现故障会发生什么。 您的嵌入代码错误。考虑使用 swfobject 从 javascript 中轻松、可靠地嵌入 swf。 好点,bfavaretto。现在有问题的代码。如果你不介意我问,嵌入代码中的错误是什么? 对不起,我的评论不准确。我指的是这个:&lt;object data="file.swf" type="application/x-shockwave-flash" width="520" height="400"&gt;。它可能不适用于所有浏览器(并且缺少&lt;/object&gt;)。但我在你的 jsfiddle 上看不到任何错误(显然不会加载 swf),并且脚本继续在那里工作(你可以随时在 flash 和 no-flash 之间切换)。 【参考方案1】:

使用EMBED 标签代替OBJECT 标签。

function takeProfilePic(type) 
//   alert(type);
if (type==0)
  
   var target = 'takepic';
   var photo = '<tr><td colspan=2 align="center"><a href="stepthree.php"><img src="images/collapse.gif" border=0></a></td></tr><tr><td colspan=2 align="center"><div id="piccontent"><embed src="file.swf" type="application/x-shockwave-flash"   /></div></td></tr>';
   document.getElementById(target).innerHTML = photo;
   return false;
  
  else if (type==1) 
   var target = 'takepic';
   var photo = '<tr><td colspan=2 align="center"><a href="stepthree.php"><img src="images/collapse.gif" border=0></a></td></tr><tr><td colspan=2 align="center"><div id="piccontent">NO FLASH OBJECT HERE</div></td></tr>';
   document.getElementById(target).innerHTML = photo;
   return false;      
       

【讨论】:

无法让它工作。你能证明它在 jsfiddle 中工作吗? 这是更新后的jsfiddle。请注意,插件永远不会在 jsfiddle 中运行,因为 SWF URL 将指向 jsfiddle 服务器。确保您没有更改任何可能干扰代码的内容。在本地运行时,将file.swf 与 HTML 放在同一文件夹中,或更改 SWF URL(基本内容)。 谢谢。有用。如果您使用的是嵌入,为什么大多数教程都有对象和嵌入。此外,是否建议包含 classid、代码库和他们通常投入的所有其他内容?这有什么用吗?非常感谢 AFAIK, OBJECT 标签最初是 Microsoft 对 HTML 的扩展,因此并非所有浏览器都支持它。它只是最近才在 HTML 4.0 中作为 Web 标准。基于 ActiveX 的对象需要CLASSID 属性。 CODEBASE 用于指定使用的相对 URL 的基本 URL(请参阅HTML4 specs 中的更多信息)。

以上是关于将 Flash 对象嵌入 html 的 Javascript 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

将 Flash youtube 更改为嵌入对象

如何将 Flash 对象正确插入模态 HTML 对话框

HTML 将Flash嵌入HTML

如何在我的网站上嵌入 Flash 对象?

将 Flash 视频流转换为 HTML

自带flash对象嵌入