在IE中使用Javascript获取Flash电影

时间:2009-07-10 16:35:08

标签: javascript flash internet-explorer cross-browser swfobject

我有一部需要用javascript获取的flash电影。

以下是我使用swf object嵌入它的方式:

<div id="ap1_mod"></div>
<script type="text/javascript">
    var flashvars = {
        mp3Path: "stop",
        artistName : "",
        trackName : ""
    };
    var params = {
        codebase: 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0',
        src: '/public/flash/ap1_mod.swf',
        quality: 'high',
        pluginspage: 'http://www.macromedia.com/go/getflashplayer',
        scale: 'showall',
        devicefont: 'false',
        bgcolor: '#999999',
        name: 'ap1_mod',
        menu: 'true',
        allowFullScreen: 'false',
        allowScriptAccess:'always', //sameDomain
        movie: '/public/flash/ap1_mod.swf',
    wmode: "transparent",
    allowfullscreen: "true"
    };

    swfobject.embedSWF("/public/flash/ap1_mod.swf", "ap1_mod", "400", "50", "9.0.0", false, flashvars, params);
</script>

以下是我尝试访问它的方式:

function getFlashMovie(movieName) {
  var isIE = navigator.appName.indexOf("Microsoft") != -1;
  return (isIE) ? window[movieName] : document[movieName];
}

像往常一样,它在Firefox和Safari中运行良好,但它在IE中打破了。如果我添加一个警告:显示返回getFlashMovie的内容我得到“未定义”。

有什么想法吗?

非常感谢

2 个答案:

答案 0 :(得分:4)

根据文档,embedSWF会将您指定的元素替换为对象,因此您只需使用:

var movie = document.getElementById("ap1_mod");

我实际上没有检查过,但因为div元素正在被一个对象元素替换,所以它可能不会在IE中重新注册为窗口属性。

答案 1 :(得分:1)

您可以在id中指定params,然后只使用:

document.getElementById( 'theId' );

引用由swfobject创建的<object>