SWFObjectを使用してASPXページに埋め込まれたFlashムービーのメソッドを呼び出すためにJavascriptを使用しています。 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マークアップ:さらに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>
、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は、「オブジェクトはこのプロパティまたはメソッドをサポートしていない」、その関数の最後の行について不平を言います。
ありがとうございます!
ためである第二のオブジェクトembedタグのidパラメータが欠落しているように見えます。 –
これらの引用符は、EndCallback属性の二重引用符の内部にあるため、エスケープする必要があると考えています。試してみると、Visual Studioデザイナーと混乱し、IISがパーサーエラーを報告する原因となりました。 –
二重引用符または二重引用符のいずれかを試してください。 –