我已经尝试过多种方式通过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
答案 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)
<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);
}
答案 4 :(得分:0)
答案 5 :(得分:0)
我在我的一个项目中遇到过这个非常奇怪的IE8错误,这很难被捕获 - 如果使用innerHTML
而不是使用document.createElement
添加了画布元素,那么Google的excanvas就会失败} / document.appendChild
。
我通过获取使用canvas
创建的所有innerHTML
元素来修复它,并使用DOM的createElement
方法重新处理它们。
我已经注意到IE8中其他“互动”元素的类似问题,所以我建议你尝试一下。
我没有IE8来测试它,但在这里,try it on jsfiddle