Windows phone 8 WebBrowser控件NavigateToString()无法为嵌入式网页触发ajax调用
我的要求是在windows phone应用程序中显示动态网页 代码片段:Windows phone 8 WebBrowser控件NavigateToString()无法为嵌入式网页触发ajax调用,windows-phone-8,webbrowser-control,Windows Phone 8,Webbrowser Control,我的要求是在windows phone应用程序中显示动态网页 代码片段: private string MYACCOUNT_URL = "http://www.abc.com" protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e) { try { //Initialization
private string MYACCOUNT_URL = "http://www.abc.com"
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
try
{
//Initialization
HttpWebRequest WebReq = (HttpWebRequest)WebRequest.Create(MYACCOUNT_URL);
WebReq.CookieContainer = cookies;
//Our method is post, otherwise the buffer (postvars) would be useless
WebReq.Method = "POST";
//We use form contentType, for the postvars.
WebReq.ContentType = "application/x-www-form-urlencoded";
//WebHeaderCollection headers = new WebHeaderCollection();
//headers[HttpRequestHeader.UserAgent] = useragent;
//WebReq.Headers = headers;
//WebReq.Headers["User-Agent"] = useragent;
//var userAgent = WebReq.GetType().GetProperty("UserAgent");
//if (null != userAgent)
//{
// userAgent.SetValue(WebReq, useragent, null);
//}
//WebReq.UserAgent = userAgent.ToString();
Cookie emailCookie = new Cookie("email", Constants.LoginUserName);
WebReq.CookieContainer.Add(new Uri(MYACCOUNT_URL), emailCookie);
Cookie userIdCookie = new Cookie("id", Constants.UserId);
WebReq.CookieContainer.Add(new Uri(MYACCOUNT_URL), userIdCookie);
Cookie tokenCookie = new Cookie("token", Constants.AccessToken);
WebReq.CookieContainer.Add(new Uri(MYACCOUNT_URL), tokenCookie);
WebReq.BeginGetResponse(new AsyncCallback(MyAccountResponseCallback), WebReq);
}
catch (WebException ex)
{ }
}
private void MyAccountResponseCallback(IAsyncResult asynchronousResult)
{
try
{
HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;
HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asynchronousResult);
Stream streamResponse = response.GetResponseStream();
StreamReader streamRead = new StreamReader(streamResponse);
string responseString = streamRead.ReadToEnd();
responseString = Regex.Replace(responseString, "<!DOCTYPE html>", "", RegexOptions.IgnoreCase).Trim();
responseString = Regex.Replace(responseString, "<html lang=\"en\">", "<html>", RegexOptions.IgnoreCase).Trim();
responseString = Regex.Replace(responseString, "<meta charset=\"utf-8\"", "<meta", RegexOptions.IgnoreCase).Trim();
if (response.StatusCode == HttpStatusCode.OK)
{
Dispatcher.BeginInvoke(() =>
{
web_browser.NavigateToString(responseString);
});
}
streamResponse.Close();
streamRead.Close();
// Release the HttpWebResponse
response.Close();
}
catch (WebException ex)
{
}
}
私有字符串MYACCOUNT\u URL=”http://www.abc.com"
受保护的覆盖无效OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
尝试
{
//初始化
HttpWebRequest WebReq=(HttpWebRequest)WebRequest.Create(MYACCOUNT\uurl);
WebReq.CookieContainer=cookies;
//我们的方法是post,否则缓冲区(postvars)将是无用的
WebReq.Method=“POST”;
//对于PostVar,我们使用表单contentType。
WebReq.ContentType=“application/x-www-form-urlencoded”;
//WebHeaderCollection headers=新建WebHeaderCollection();
//headers[HttpRequestHeader.UserAgent]=UserAgent;
//WebReq.Headers=标题;
//WebReq.Headers[“用户代理”]=用户代理;
//var userAgent=WebReq.GetType().GetProperty(“userAgent”);
//if(null!=userAgent)
//{
//SetValue(WebReq,userAgent,null);
//}
//WebReq.UserAgent=UserAgent.ToString();
Cookie-emailCookie=新Cookie(“电子邮件”,Constants.LoginUserName);
WebReq.CookieContainer.Add(新的Uri(MYACCOUNT\uURL)、emailCookie);
Cookie userIdCookie=新Cookie(“id”,Constants.UserId);
WebReq.CookieContainer.Add(新的Uri(MYACCOUNT\uURL),userIdCookie);
Cookie tokenCookie=新Cookie(“token”,Constants.AccessToken);
WebReq.CookieContainer.Add(新的Uri(MYACCOUNT\uURL),tokenCookie);
WebReq.BeginGetResponse(新的异步回调(MyAccountResponseCallback),WebReq);
}
捕获(WebException ex)
{ }
}
私有void MyAccountResponseCallback(IAsyncResult asynchronousResult)
{
尝试
{
HttpWebRequest请求=(HttpWebRequest)asynchronousResult.AsynchState;
HttpWebResponse=(HttpWebResponse)request.EndGetResponse(asynchronousResult);
streamResponse=response.GetResponseStream();
StreamReader streamRead=新的StreamReader(streamResponse);
字符串responseString=streamRead.ReadToEnd();
responseString=Regex.Replace(responseString,“,”,RegexOptions.IgnoreCase.Trim();
responseString=Regex.Replace(responseString,“,”,RegexOptions.IgnoreCase.Trim();
responseString=Regex.Replace(responseString,感谢您的回复。不幸的是,“IsScriptEnabled”在这里没有帮助。但我得到了一个解决方案。我使用“Navigate”方法而不是“NavigateToString”,它正在工作。它正在加载网页,并且允许我执行网页上的所有事件
谢谢另一个可能的选择是使用导航(“关于:空白”)
导航到空白页面,处理WebBrowser.LoadCompleted
事件,然后通过WebBrowser.Document
注入所需的HTML和脚本。