Windowsデスクトップアプリケーション内のWebページ用のJavaScriptコントロールを使用する必要があるという不幸な立場にあります。これを達成するために、アプリケーション内でInternet Explorerをホストし、ローカルWebページに移動するように指示します。次に、スクリプトエンジンのIDispatchインターフェイスを取得し、それを使用してコントロールと対話します。ウェブページはこのようなものになります。JavascriptがホストされているWebブラウザに読み込まれていません
<html>
<head>
<script src="third party website url" type="text/javascript"></script>
</head>
<body onload="OurApp.OnLoad()">
</body>
</html>
を(私は明確にするため、いくつかのタグと属性を省略しました)私たちは、スクリプトエンジンの名前空間に「OurApp」オブジェクトを追加します。これは、スクリプトがアプリケーションにコールバックできるようにするIDispatchインターフェイスです。アプリケーションのOnLoad()メソッドでは、コントロールによって定義されたさまざまなJavaScriptオブジェクトを構築します。
問題: 99%のケースでは、この設定がうまく機能します。残念ながら、一部の顧客のマシンでは、OnLoad()メソッドはスクリプトエンジンで期待されるメソッドを見つけることができません。サードパーティのウェブサイトのJavaScriptが読み込まれていないか、実行が許可されていないかのようです。多くのお客様にとって、Internet Explorerのセキュリティ設定を変更することで問題を解決しました。しかし今、セキュリティ設定が正しいと思われる顧客がいますが、まだ問題が発生しています。
上記のようにWebページを作成して顧客に開いてもらい、ポップアップバーを表示してアクティブコンテンツを承認するように要求すると、同意するとすべて正常に動作します。 (このページでは、OurApp.OnLoad()呼び出しを同じことをするいくつかのJavaScriptに置き換えました)。これは私のマシン上での動作と同じですが、ここでは正常に動作します。顧客のマシン上でエラーメッセージが表示されることはありません(ただし、正しい場所を探していない可能性もあります)。
だから、私は困惑しています。どんな考えや提案も大歓迎です。
更新 最終的に問題を解決しました。問題は、サードパーティのウェブサイトにサポートされていないロケールを渡していたことでした。この場合、彼らは近いマッチや合理的なデフォルトの代わりに空のスクリプトとして戻ってきました。
これは確かに非常に有望です。私はそれがどのようになったかをあなたに知らせます。 –
さて、コントロールサイトでISecurityManagerインターフェイスを実装しましたが、まだ喜んでいません。これは、Internet Explorerのセキュリティ設定があまりにも厳しいため、私たちにとって有益な問題を解決します。それは確かにサポート呼び出しを取り除くので、これに感謝します。残念ながら、私たちの奇妙な球の顧客は、私は同じ症状でなければならないが、別の原因でなければならないと思う問題を抱えています。とにかく、私はそれを維持します。再度、感謝します。 –
問題は単純なローカリゼーションの問題であることが判明しましたが、これは本当に便利な答えです。 –