我正在使用Javascript調用嵌入在使用SWFObject的ASPX頁面中的Flash影片的方法。它在Firefox中正常工作,但Internet Explorer 7和8(迄今爲止)聲稱swfobject.getObjectById()
返回的對象「不支持此屬性或方法」。我在這個網站和其他網站上發現了類似的帖子,但是我沒有試過在IE中修復過這個帖子。爲什麼Internet Explorer無法在ASPX中看到我的Flash ExternalInterface方法?
的ActionScript 3.0類:
public class Player extends MovieClip {
public function Player()
{
Security.allowDomain("http://localhost");
ExternalInterface.addCallback("test", test);
}
public function test():void
{
debugBox.appendText("test() called successfully\n");
}
}
ASPX標記:
<head runat="server">
<script type="text/javascript" src="Scripts/swfobject.js"></script>
<script type="text/javascript">
swfobject.registerObject("myPlayer", "9.0.0", "scripts/expressInstall.swf");
</script>
</head>
<body>
<form id="form1" runat="server">
<div class="movie">
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="640" height="640" id="myPlayer">
<param name="movie" value="Player.swf" />
<param name="allowscriptaccess" value="always" />
<!--[if !IE]>-->
<object type="application/x-shockwave-flash" data="Player.swf" width="640" height="640">
<!--<![endif]-->
<a href="http://www.adobe.com/go/getflashplayer">
<img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif"
alt="Get Adobe Flash player" />
</a>
<!--[if !IE]>-->
</object>
<!--<![endif]-->
</object>
</div>
而且沿ASPX標記,這是試圖讓Flash對象,並調用其test()
方法的代碼正在發生在來自第三方組件(DevExpress ASPxHiddenField)的AJAX回調中。這個回調是由用戶輸入Flash動畫加載後觸發:
<dx:ASPxHiddenField ID="filenameHiddenField" runat="server" OnCustomCallback="filenameHiddenField_CustomCallback"
SyncWithServer="False">
<ClientSideEvents EndCallback="function(s, e) {
var playerObject = swfobject.getObjectById("myPlayer");
playerObject.test();
}" />
</dx:ASPxHiddenField>
Internet Explorer的抱怨在該函數的最後一行,「對象不支持此屬性或方法」。
謝謝!
嘗試用實際引號字符替換URL編碼引號字符id參數。 –
我相信這些引號需要轉義,因爲它們在EndCallback屬性中的一組雙引號內。試圖混淆Visual Studio設計器並導致IIS報告解析器錯誤。 –
嘗試使用雙引號或加倍單引號。 –