12

更新:この問題には回避策があります。次のメタタグのいずれかを含めることにより、IE10を互換モードに強制します。

<meta http-equiv="x-ua-compatible" content="IE=7" />
<meta http-equiv="x-ua-compatible" content="IE=8" />

これはさまざまな理由で実際には完璧な解決策ではありませんが、少なくとも問題を解決します。


元の質問:
数か月前、Windows 8のIE10のSilverlightアプリケーションに問題があることに気付きました(Windows 7のIE10プレビューは試していません)。SLアプリをホストしているasp.netページが最初に読み込まれると、すべてが正常に機能し、アプリケーションは期待どおりに読み込まれます。すぐにページを更新すると、期待どおりにリロードされます。ただし、Silverlightアプリケーションをクリックしてフォーカスし、F5キーを押すと、空白になります。プラグインが完全に消えたようなものです。Fiddlerを使用してリクエストをトレースすると、xapファイルに対してリクエストが発行されていないことがわかります。これがIE10のパッチリリースで修正されることを期待していましたが、これまでのところ何も変更されていません。グーグルしようとすると、これに関する情報が見つかりません。私が最初にそれを発見する可能性は非常に低いと思われ、それ以上の情報が見つからないことに非常に驚いています。問題を再現するには:

  • 新しいSilverlightアプリケーションを作成する
  • ButtonなどのコンテンツをMainPage.xamlに追加します
  • IE10でアプリを実行する(Win8上)
  • Silverlightアプリケーション内の任意の場所をクリックします。これはプラグインに焦点を合わせるためだけのものです。
  • ページを更新する(F5)
  • 結果:Silverlightアプリケーションが読み込まれず、ページが空白になります。

いくつかの観察:

  • 上記の手順の後、更新してもアプリケーションは元に戻りません。
  • 上記の手順の後、URLをアドレスバーに再入力してEnterキーを押すと、アプリケーションは期待どおりに読み込まれます。
  • IEで互換表示を有効にすると、アプリも期待どおりに読み込まれます。互換表示が有効になっている場合、バグを再現することはできません。

今私の質問に:

  1. 他の誰かがこの行動を観察しましたか?
  2. もしそうなら、あなたは回避策を見つけましたか?
4

6 に答える 6

6

IE 10 の Silverlight アプリケーションでも同じ問題が発生しています。

上記の IE 8 互換性メタ タグを追加しようとしましたが、問題が一貫して解決されるわけではありません。5回目のリフレッシュ試行ごとに、断続的にしか機能しないようです?!

これを一貫して回避する唯一の方法は、ブラウザ モードを強制的に「IE 10 互換表示」にすることですが、ページ コンテンツ (メタ タグなど) を介してこれを行うことはできないと思いますか? IE 8 の互換性メタ タグを削除して、アドレス バーで [互換表示] ボタンを使用できるようにし、ユーザーに互換性ボタンをクリックするように依頼する必要がありました。これにより、ブラウザーはブラウザー モード: "IE 10 Compat View" およびドキュメント モード: "IE7 Standards" に入ります。その後、リフレッシュ動作は一貫して期待どおりに機能し、以前と同様に機能します。

これは私たちにとって大きな問題です。ブラウザーの更新ボタンを使用してアプリ内のページ/コンテンツを更新する (ユーザーがログインしたままにするなど) ように、Silverlight アプリを構築しました。更新機能が期待どおりに機能するために、サイトを互換モードで実行するように設定するようにユーザーに依頼しなければならないのは本当に残念です。

これは Chrome でも期待どおりに機能することに注意してください。この問題のために、ユーザーに Chrome の使用を推奨する必要があるかもしれないというのはばかげているように思えます。

アップデート:

これに対する回避策は、JavaScript を使用して常に Silverlight オブジェクトをそのホスティング ページに動的にロードすることです。

例えば

function onLoad() {
  var silverlightControlHost = document.getElementById("silverlightControlHost");
  silverlightControlHost.innerHTML = "<object ...

更新 2:

この問題を回避するために使用する最新のコードは次のとおりです。

...
        function unloadSilverlight() {
            document.getElementById("silverlightControlHost").innerHTML = "";
        }

        function focusOnSilverlight() {
            document.getElementById("silverlightObject").focus();
        }

        function onLoad() {
            window.onbeforeunload = unloadSilverlight;
            setTimeout(focusOnSilverlight);
        }
    </script>
</head>
<body onload=" onLoad() ">
...
于 2013-02-11T00:32:29.503 に答える
3

クリスが提示したソリューションにはまだ問題がありました。

これは私にとっては完璧に機能します:

window.onbeforeunload = function () {
            var silverlightControlHost = document.getElementById("silverlightControlHost");
            silverlightControlHost.innerHTML = "";
        }
于 2014-04-16T23:54:39.370 に答える
1

私は非常に簡単な方法で問題を解決しました。ページの最後 (または Silverlight アプリの object タグの後) に JavaScript コードを記述し、リンクなどの別の要素にフォーカスを設定しました。例:

<object id="silverlightHostControl">...bla bla bla</object> <script type="text/javascript" language="javascript"> var shc = document.getElementById("silverlightHostControl"); document.getElementById("myLink").focus(); </script>

shc var は役に立たないので、明確にするために置いておきます。覚えておいてください: Silverlight アプリ オブジェクト タグが解析された後、JavaScript コードは別の (ただしフォーカス可能な) オブジェクトにフォーカスを設定する必要があります。つまり、Silverlight アプリ オブジェクトの後に js コードが記述されます。

于 2014-03-05T01:49:21.297 に答える
0

あなたの質問#1に答えて、これは私たちのSilverlightアプリでも起こっています。唯一の回避策は、1)ブラウザを再起動するか、2)互換性モードに切り替えることです。

どうやらie10のバグです。

于 2013-01-11T04:16:44.860 に答える
0

すべての回避策に感謝しますが、これは明らかに Silverlight プラグインのバグです。

Internet Explorer 開発チームに直接問い合わせをしたところ、問題は外部の問題によるものであるとのことでした。Microsoft からの適切な回答ではありません。

とにかく、今回は開発者が Silverlight 開発チームを通じてチケットを提出しましたが、まだ応答を待っています。彼らから良い反応を得るには、この問題に直面しているより多くの人々を獲得する必要があります.

この問題は、Microsoft の公式のバグ報告プラットフォームである Connect Web サイトから投票できます。

チケットへのリンクは次のとおりです: http://connect.microsoft.com/VisualStudio/feedback/details/789004/ie10-shows-blank-page-upon-refreshing-silverlight-app

乾杯

モウ

于 2013-06-03T02:00:07.017 に答える
0

ええ、私のアプリケーションでも同じ問題に直面しています。IE 10 でアプリケーションのヘルプを開くと、コンテンツを表示するたびにページを更新する必要があります。

この問題には 2 つの回避策があります。 1. Alt キーを 1 回押します。 2. 互換モードで IE を開きます。

于 2013-06-05T14:11:21.680 に答える