2010-11-18 15 views
4

WebBrowserコントロールを使用して、Windows Phone 7エミュレータとデバイスにローカルに読み込まれたhtmlファイルを起動して参照できます。クエリ文字列を使用してWebページのナビゲーションが使用されるまでは、すべて正常に動作します。 javascriptはこれらのクエリ文字列を読み取る必要がありますが、クエリ文字列が含まれているとナビゲーションは完全に失敗します。ナビゲーションはクエリ文字列なしで正常に動作します。Webブラウザコントロールとクエリ文字列WP7

私は大きな時間がこれに固執し、あなたの考えを本当に感謝します。 Tony

+0

をハッシュタグするクエリ文字列を持つすべてのリンクを置き換えるために、いくつかのJSをハックあなたが何をしようとしての例を挙げてもらえますか? –

答えて

7

ローカルのHTMLファイルにクエリ文字列を渡す方法もありません。 (私はIsolated StorageにHTMLファイルをコピーしてそこから見た)

しかし...
私は正常にローカルHTMLファイルに移動してフラグメントを指定できます。そしてフラグメントが含まれている場合はそれも記号(=)とアンパサンド(&)に等しい働くので、あなたはこれを行うことができます:

webBrowser1.Navigate(new Uri("index.html#123=abc&456=def", UriKind.Relative)); 

との次を表示するには、次の

<html> 
<head> 
    <script type="text/javascript"> 
     function onLoad() { 
      fs.innerHTML = document.location.href.split("#")[1]; 
     } 
    </script> 
</head> 
<body onload="onLoad()" > 
    <p id="fs" /> 
</body> 
</html> 

で値を取得しますページ(ブラウザコントロール内)。

123=abc&456=def 

(もちろんあなたは、必要に応じてJavaScriptで値を持つ、より適切な何かを行うことができます。)

はい、あなただけのクエリ文字列のようなfragentを使用することができます。

これは明らかに、両方を使用する必要がない限り、正常に動作します。

+0

ありがとうMatt、Unfortunetly iso storeにダウンロードして保存しているHtmlファイルを修正することはできず、そのまま処理しなければならないので、このソリューションは私にとっては役に立たない。 – TonyNeallon

+0

@Tony webbrowserコントロールは、そのままの状態では動作しません。あなたは、彼らが電話で動作するようにファイルを変更する必要があります。サーバー上で変更できない場合は、一度ダウンロードした独立したストレージに保存する前に行うことができます。 –

+0

AndroidとIOSは、クエリ文字列に含まれるローカルファイルについては不平を言っていません。 Windows PhoneのWebBrowserは、APIが提供するものに関しては、andrdoidのWebViewとiOSのUIWebViewよりはるかに遅れています。 WP8にもこの問題が存在することに注意してください。 –

0

クエリ文字列を渡す場合は、Webサーバーが必要です。

これは、ブラウザが別のファイルとの違いのクエリ文字列がわからないためです。これは、ファイルが "file.html?param = value"という名前のファイルだけを検索し、ローカルでは見つからないと考えています。

Webサーバーがないとローカルには不可能です。


ソリューション小さなウェブサーバローカル

  1. スポーン。
  2. それがローカルであるときを知っていると
関連する問題