0

URL の応答で取得したフラッシュ ファイルの src 属性を読み取り、swfobject を介して新しいファイルを作成しようとしています。しかし、埋め込みタグの src を読み取ると、「未定義」が返されます。以下の私のコード。

私が投稿しているページには、フラッシュファイルしかありません。

レスポンスは以下のとおりです。

AJAX レスポンス

<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でフラッシュファイルを使用してページを実行すると。それは奇妙な方法でそれをレンダリングします

<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>
     ">

オブジェクトにaltHTML属性を追加すると、埋め込みタグ全体がその中に入り、全体が台無しになります。:(

4

1 に答える 1

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);
    }
});

注: 参考までに....swfobject のプロパティの順序も重要です。Param は属性の前に来る必要があります。そうしないと、IE の一部が台無しになります。:)

于 2012-08-15T08:41:51.657 に答える