2010-11-18 3 views
4

Я использую элемент управления WebBrowser для запуска и просмотра некоторых файлов html, загружаемых локально в эмулятор и устройство Windows Phone 7. Все работает нормально до навигации по веб-странице с использованием строки запроса, которую мы использовали. Javascript должен прочитать эти строки запроса, но при полной загрузке строки навигации полностью не удается. Навигация отлично работает без строки запроса.Строка управления и запроса Webbrowser WP7

Im большое время застрял на этом и действительно оценил бы ваши мысли. Tony

+0

Могли бы вы привести пример того, что вы пытаетесь сделать? –

ответ

7

Я тоже не могу найти способ передать строку запроса в локальный файл HTML. (Я скопировал файл 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, к сожалению, это решение не будет работать для меня, поскольку файлы Html, загружаемые и хранящиеся в магазине iso, не могут быть изменены и должны быть обработаны как есть. – TonyNeallon

+0

@Tony Управление веб-браузером не будет работать с файлами как есть. Вам нужно будет изменить файлы для их работы на телефоне. Если вы не можете изменить их на сервере, вы можете сделать это до сохранения в изолированном хранилище после загрузки. –

+0

Android и IOS не жалуются на локальные файлы, включенные в строки запроса. Веб-браузер Windows Phone значительно отстает от веб-браузера andrdoid и UIWebView от iOS, когда дело доходит до того, что предлагает API. Обратите внимание, что эти проблемы существуют и в WP8. –

0

Вам нужен веб-сервер, если вы передадите запрос.

Это связано с тем, что браузер не знает, что такое строка запроса в отличии от другого файла. Он думает, что файл называется «file.html? Param = value», который ищет этот файл и не находит его локально.

Так что локально без веб-сервера это невозможно.


Solutions

  1. Spawn крошечные веб-сервер локально.
  2. Hack некоторые JS, чтобы знать, когда она является локальной и заменить все ссылки со строкой запроса в Hashtags
Смежные вопросы