【发布时间】:2012-02-19 07:04:56
【问题描述】:
我正在尝试编写一个检测嵌入对象的 javascript 函数。作为我 3 小时研究的结果,我发现在 html 中使用 .swf 文件有两种主要方法
对象标签,例如:
<object data="intro.swf" height="200" width="200"/>嵌入标签,例如:
<embed src="intro.swf" height="200" width="200"/>
但还有第三种方法是跨浏览器的,并且在某种程度上更常见:
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0"
width="100"
height="100">
<param name="movie" value="sample.swf">
<param name="quality" value="high">
<embed src="sample.swf" quality="high" width="100" height="100"
type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer">
我找到了一个函数here:
function getFlashMovieObject(movieName) {
if (window.document[movieName]) {
return window.document[movieName];
}
if (navigator.appName.indexOf("Microsoft Internet") == -1) {
if (document.embeds && document.embeds[movieName])
return document.embeds[movieName];
}
else // if (navigator.appName.indexOf("Microsoft Internet")!=-1)
{
return document.getElementById(movieName);
}
}
但是这个函数需要 id/Name 属性作为参数,对我不好。 我认为最好先检测浏览器,然后再寻找 flash 对象。 我还在努力。 如何检测 RENDERED flash object??
【问题讨论】:
-
我曾经写了一个小书签来查找 flash,我记得这个有趣的事实:
objects 可以嵌套,所以object可能是object的后代。当然,embeds 通常用作objects 的子代。你需要过滤掉那个。
标签: javascript flash