我正在尝试读取flash文件的src属性,我在url的响应中获取该属性并通过swfobject创建一个新文件。但它让我回归" undefined"当我读取embed标签的src时。我的代码如下。
我正在发帖子的页面,只有flash文件。
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="930" height="630" title="Campaign">
<param name="movie" value="final5.swf" />
<param name="quality" value="high" />
<embed src="final5.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="930" height="630"></embed>
</object>
$.ajax({
url: flashUrl,
type: "POST",
dataType:"html",
success: function(data, status, xhr) {
var swfUrl = flashUrl.substr(0, flashUrl.lastIndexOf('/')) + "/" + $(data).find('embed').attr('src');
$('.content').html('<div id="mySwf"></div>');
swfobject.embedSWF(swfUrl, "mySwf", "200", "200", '9.0.0', "/resources/expressInstall.swf", flashvars, attributes, params);
}
});
我知道问题是什么,但我不知道它的发生。 当我在IE中使用Flash文件运行页面时。它以一种奇怪的方式呈现它
<object width="930" height="630" title="Campaign" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codeBase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" altHtml="
<embed src="skf-final5.swf" type="application/x-shockwave-flash" width="930" height="630" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" > </embed>
">
它为Object添加了一些 altHTML 属性,整个embed标签进入它,这搞砸了整个东西。 :(
答案 0 :(得分:0)
很好找到我们在标签中得到“altHTML”的原因。 但找到了解决这个问题的方法。
$.ajax({
url: flashUrl,
type: "POST",
dataType:"html",
success: function(data, status, xhr) {
$('.layer-view .content').html('<div id="kcSwf"></div>');
// Building path for flash url
var swfUrl = flashUrl.substr(0, flashUrl.lastIndexOf('/')) + "/" + $(data).findAndSelf('param[name="movie"]').attr('value');
var swfWidth = $(data).findAndSelf('object').attr('width');
var swfHeight = $(data).findAndSelf('object').attr('height');
var swfBgColor = $(data).findAndSelf('param[name="bgcolor"]').attr('value');
if(swfBgColor=="undefined") swfBgColor="#ffffff";
var layerviewWidth = parseInt(swfWidth) + 20;
$('.layer-view .view').css('width', layerviewWidth);
var flashvars = false;
var params = {salign:'t', bgcolor:swfBgColor};
var attributes = {};
swfobject.embedSWF(swfUrl, "kcSwf", swfWidth, swfHeight, flashVersion, "/resources/expressInstall.swf", flashvars, params, attributes);
}
});
注意:FYI .... swfobject中的属性序列也很重要。 Param必须在属性之前出现,否则它会搞砸IE中的一些东西。 :)