IE是唯一不允许Flash对象操作的浏览器(或版本)吗?

时间:2012-05-03 04:41:57

标签: javascript jquery html internet-explorer browser

我已经尝试过多种方式通过Javascript编辑Flash对象/嵌入,它似乎可以在除了IE之外的所有内容中工作,所以我正在考虑将IE从这个应用程序的窗口中抛出,除非有旧的+使用过的版本其他浏览器也不允许您编辑对象。这方面的一个例子是:

document.getElementById(divID).innerHTML = '<object ...><embed ...><\/embed><\/object>';

或在jquery中

var params = '<param name="allowFullScreen" value="true" />' +
             '<param name="allowScriptAccess" value="always" />' +
             '<param name="allowNetworking" value="all" />' +
             '<param name="movie" value="player.swf" />' +
$("#objectPlayer").html(params);

如果所有其他现代浏览器及其最常用的版本都支持这种编辑,那么我只会废弃IE。在我遇到SWFObject JS框架之前,我不打算为浏览器添加一个巨大的框架,我认为它不会包含我的人口统计数据。

JSFiddle

这是我创建的JSFiddle的链接。它适用于所有浏览器,但IE8

6 个答案:

答案 0 :(得分:8)

我相信代码的<param>部分适用于<object>

您还必须传递embed的名称/值对。

$("#objectPlayer embed").attr({
    "src": "fileName.swf",
    "name": "fileName",
    "allowFullScreen": "true",
    "width": 200,
    "height": 100,
    "type": "application/x-shockwave-flash"

    //and so on...
    });

但无论如何我会使用SWFObject,它是行业标准,它非常强大,它是在网站上嵌入flash的最佳方式。

答案 1 :(得分:0)

如果我理解你的问题和使用目的,这就是我的建议。

我会使用SWFObject将您的SWF嵌入到您的HTML页面中。从那里,您可以将flashVars(可以在其上设置自定义值的对象)传递给SWF。实现这一点并没有太大的努力,它的使用更清洁(在我看来)。可以使用PHP值轻松设置flashVars的值,或者使用普通值填充它们。

有关SWFObject和FlashVars的更多信息以及如何在ActionScript 3中使用它们,请查看this文章。

答案 2 :(得分:0)

我知道的SWFObject唯一合适的替代方案是jQuery Tools Flashembed插件,它缩小了3.6k(并且在压缩时更少):

http://jquerytools.org/demos/toolbox/flashembed/index.html

下载链接:http://jquerytools.org/download/ 唯一的依赖是jQuery本身。

答案 3 :(得分:0)

嗯......很奇怪,DOM在IE8中无法正常更新。 这是工作代码。这很丑陋,还有很多优化空间:

<div id="player">
<a href="javascript: void(0)" onclick="build()">Click Me!</a><br />
    <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" type="application/x-shockwave-flash" id="twitchTV" width="600" height="368" style="margin:0px;padding:0px">

    <param name="movie" value="http://www.twitch.tv/widgets/live_embed_player.swf?channel=day9tv" />
    <param name="quality" value="high" />
    <param name="bgcolor" value="#ffffff" />
    <param name="allowFullScreen" value="true" />
    <param name="allowScriptAccess" value="always" />
    <param name="allowNetworking" value="all" />
        <embed src="http://www.twitch.tv/widgets/live_embed_player.swf?channel=day9tv" quality="high" bgcolor="#ffffff" width="600" height="368"
    name="videoplayer" align="" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>
    </object>     

</div>

JS:

function build(){
    // Usually the channels are vars, but this is simplified.
    var data = 'http://www.twitch.tv/widgets/live_embed_player.swf?channel=lzgamertv';   // Object Data
    var html = '<a href="javascript: void(0)" onclick="build()">Click Me!</a><br /><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" type="application/x-shockwave-flash" id="twitchTV" width="600" height="368" style="margin:0px;padding:0px"><param name="movie" value="'+data+'" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" /><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="allowNetworking" value="all" /><embed src="'+data+'" quality="high" bgcolor="#ffffff" width="600" height="368" name="videoplayer" align="" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed></object>';


     $("#player").html("");
     $("#player").append(html);


}

JSFiddle is here

答案 4 :(得分:0)

你可以试试这样的......

http://jsfiddle.net/eH8cK/

当您几乎已经重写了大部分内容时,您实际上可以重写播放器的全部内容。

请尝试让我知道它是否有效。感谢

答案 5 :(得分:0)

我在我的一个项目中遇到过这个非常奇怪的IE8错误,这很难被捕获 - 如果使用innerHTML而不是使用document.createElement添加了画布元素,那么Google的excanvas就会失败} / document.appendChild

我通过获取使用canvas创建的所有innerHTML元素来修复它,并使用DOM的createElement方法重新处理它们。

我已经注意到IE8中其他“互动”元素的类似问题,所以我建议你尝试一下。

我没有IE8来测试它,但在这里,try it on jsfiddle