2010-11-18 8 views
4

Im utilisant le contrôle WebBrowser pour lancer et parcourir certains fichiers html chargés localement dans l'émulateur et le périphérique Windows Phone 7. Tout fonctionne bien jusqu'à une navigation de page Web avec une chaîne de requête que nous utilisons. Le javascript doit lire ces chaînes de requête mais la navigation échoue totalement lorsque la chaîne de requête est incluse. La navigation fonctionne correctement sans la chaîne de requête.Contrôle et base de requête Webbrowser WP7

Im grand temps bloqué sur cela et j'apprécierais vraiment vos pensées. Tony

+0

Pourriez-vous donner un exemple de ce que vous essayez de faire? –

Répondre

7

Je ne trouve pas non plus un moyen de transmettre une chaîne de requête à un fichier HTML local. (J'ai copié le fichier HTML dans le stockage isolé et l'ai visualisé à partir de là.)

Cependant ...
Je peux naviguer avec succès dans un fichier HTML local et spécifier un fragment. Et cela fonctionne même si le fragment comprend le signe égal (=) et esperluette (&) afin que vous puissiez le faire:

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

et obtenir la valeur avec la

suivante
<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> 

pour afficher les éléments suivants sur la page (dans le contrôle du navigateur).

123=abc&456=def 

(Il est évident que vous pourriez faire quelque chose de plus approprié avec la valeur en javascript si nécessaire.)

Oui, vous pouvez simplement utiliser la fragent comme le querystring. Cela fonctionne évidemment bien tant que vous n'avez pas besoin d'utiliser les deux.

+0

Merci Matt, Malheureusement, cette solution ne fonctionnera pas pour moi car les fichiers Html téléchargés et stockés dans le magasin iso ne peuvent pas être modifiés et doivent être traités tels quels. – TonyNeallon

+0

@Tony Le contrôle webbrowser ne fonctionnera pas avec les fichiers tels quels. Vous devrez changer les fichiers pour qu'ils fonctionnent au téléphone. Si vous ne pouvez pas les modifier sur le serveur, vous pouvez le faire avant d'enregistrer dans un stockage isolé une fois téléchargé. –

+0

Android et IOS ne se plaignent pas des fichiers locaux inclus avec les chaînes de requête. WebBrowser de Windows Phone est loin derrière WebView d'andrdoid et UIWebView d'iOS quand il s'agit de ce que l'API offre. Notez que ce problème existe également dans WP8. –

0

Vous avez besoin d'un serveur Web si vous transmettez une chaîne de requête. Ceci est dû au fait que le navigateur ne sait pas ce qu'est une chaîne de requête à la différence d'un autre fichier. Il pense seulement que le fichier est nommé "fichier.html? Param = valeur" recherche ce fichier et ne le trouve pas localement.

Donc localement sans serveur web c'est impossible.


Solutions

  1. Spawn un petit serveur web local.
  2. Hack quelques js savoir quand il est local et de remplacer tous les liens avec la chaîne de requête à hashtags
Questions connexes