12

我已经尝试了多种通过 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 以外的所有浏览器

4

6 回答 6

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 的最佳方式。

于 2012-05-10T12:42:00.300 回答
0

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

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

我注意到 IE8 中的其他“交互式”元素存在类似问题,所以我建议你试试这个。

我没有IE8来测试它,但是在这里,在jsfiddle上试试

于 2012-05-12T00:20:09.380 回答
0

你可以试试这样的...

http://jsfiddle.net/eH8cK/

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

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

于 2012-05-11T05:46:44.663 回答
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 在这里

于 2012-05-10T22:52:15.643 回答
0

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

我会使用SWFObject将您的 SWF 嵌入到您的 HTML 页面中。从那里您可以将 flashVars(您可以在其中设置自定义值的对象)传递给您的 SWF。实现这一点并不费力,而且使用起来更干净(在我看来)。flashVars 的值可以很容易地用 PHP 值设置或用普通值填充它们。

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

于 2012-05-06T17:04:52.493 回答
0

我所知道的 SWFObject 的唯一不错的替代品是 jQuery Tools Flashembed 插件,它缩小了 3.6k(压缩时更小):

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

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

于 2012-05-10T13:27:36.223 回答