2012-03-29 6 views
2

...シルバーサファリ5ブラウザで実行しているときに我々は次の例外を取得している5と我々は最近、Silverlightの5にアップグレードのSafari 5ブラウザ

型のオブジェクトをキャストすることができません「System.Windows.Browser.HtmlElement」 「System.Windows.Browser.HtmlWindow」と入力します。

この問題をどのように解決すればよいですか?

+0

実行中のOSは何ですか? http://www.microsoft.com/getsilverlight/Get-Started/Install/Default.aspx – Bryant

答えて

1

最近、私たちもこれを手に入れました。最初の問題は、サファリがサポートされているブラウザの公式リストにないことです。以前は機能していましたが、再び動作することが保証されていません。

ナビゲーションでSilverlightビジネスアプリケーションを使用していると思いますか?または、私はビジネスアプリケーションがこの問題を再現すると信じています。私はそれを修正した方法(found from hereが)(あなたがそれを変更した場合や、あなた相当)以下を含めるようにメインコンテンツMainPage.xamlを内枠を変更することです:

<navigation:Frame JournalOwnership="OwnsJournal" ... 

これは戻ってナビゲーションを破壊し、 。私たちはもう少し周りに遊んで、これを唯一のサファリのために設定しようとしますが、これは少なくともあなたに行く必要があります!

EDIT:簡単にのみコードビハインドでサファリにそれを得た:

if (HtmlPage.BrowserInformation.UserAgent.Contains("Safari")) 
{ 
    ContentFrame.JournalOwnership = JournalOwnership.OwnsJournal; 
} 
0

わからない、これは助けになるだろうが、次の回避策は、私の特定のためにSL5およびWindows上のすべてのブラウザを使用して私のために動作するかどうか使用事例。クエリ文字列の情報を渡す別のアプリケーションからホストページを読み込みます。私は以前に使用していました

foreach (var key in HtmlPage.Document.QueryString.Keys) 

クエリ文字列のキーと値を保持し、それに応じて処理します。 HtmlPage.Documentはもはやクロスブラウザーではないので、私はすべての選択肢を試しましたが、Javascript(JS)によって呼び出せる.net型を作成しました。ホストページが読み込まれると、JSを使用してクエリ文字列を抽出し、.net型に渡します。

<param name="onLoad" value="plugInLoaded"/> 

といくつかのJS:この追加するには、ホストページには、これを行うには

<script type="text/javascript"> 
    function plugInLoaded(sender) { // code to set values into your .net type } 
</script> 

に私のための課題は、私たちのSLのページがすぐにHTTPリクエストを行う必要があるということでしたメインコントロールがレンダリングされた後にデータを取得します。私たちはRIAサービスを使用していません。 JSから.netにデータを渡すためのMSDNのほとんどの例は、ボタンをクリックするだけです。 SLコントロールがレンダリングされた後、JSコードが.netタイプの値を設定する競合状態が発生しました。 Dispatcherを使用すると、この問題は解決しました。

Dispatcher.BeginInvoke(() => { // code to get the value from the .net type } 
関連する問題