将 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。现在有问题的代码。如果你不介意我问,嵌入代码中的错误是什么? 对不起,我的评论不准确。我指的是这个:<object data="file.swf" type="application/x-shockwave-flash" width="520" height="400">
。它可能不适用于所有浏览器(并且缺少</object>
)。但我在你的 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 不起作用的主要内容,如果未能解决你的问题,请参考以下文章