0

公開された Web サイトからクライアントの API 呼び出しごとに挿入する次の JavaScript コード (下部) があります。

Web ページ内のクライアントは、次のようなスクリプト タグ呼び出しを行います。

<div id="myDivID"/>
<script type="text/javascript" src="http//:srv.ab.com/api/getswf?divIdToReplace=myDivID"></script>

これが実行されると、API 呼び出しから次のコードが挿入され、div が swf に置き換えられます。

<script type="text/javascript">

        (function () {

            var object = document.createElement('object');
            object.setAttribute('width', '300');
            object.setAttribute('height', '250');
            object.setAttribute('classid', 'clsid:d27cdb6e-ae6d-11cf-96b8-444553540000');

            var param1 = document.createElement('param');
            param1.setAttribute('name', 'movie');
            param1.setAttribute('value', 'http://srv.ab.com/test.swf');

            var embed = document.createElement('embed');
            embed.setAttribute('src', 'http://srv.ab.com/test.swf');
            embed.setAttribute('width', '300');
            embed.setAttribute('height', '250');

            var param2 = document.createElement('param');
            param2.setAttribute('name', 'wmode');
            param2.setAttribute('value', 'transparent');

            object.appendChild(param1);
            object.appendChild(embed); // <-- Invalid argument for IE9!!!
            object.appendChild(param2);

            var container = document.getElementById('myDivID');
            while (container.firstChild) { container.removeChild(container.firstChild); }
            container.appendChild(object);
        })();

</script>

ただし、swf は IE9 では表示されませんが、Chrome と FF では正常にレンダリングされます。

注意すべきことの 1 つは、スクリプトで以下に示されているように、コンソールでのみ IE9 の無効な引数エラーが発生することです。

ここで何が欠けていますか?jquery/swfobject は、クライアント ページに挿入するプレーンな JavaScript でなければならないため、使用できません。

4

1 に答える 1

0

IE が特定のイントラネット/インターネット サイトを Quirks モードに設定していることが判明しました。これにより、IE9 は IE6 の JavaScript の動作と IE7 の DOM 操作を使用します。

ヘッダーに次のメタデータを追加すると、これが軽減されます。

<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
</head>

ただし、API 配信ソリューションからは、X-UA-Compatible ヘッダーを応答に IE=edge の値で設定できます。

于 2012-10-23T23:36:40.840 に答える