Windows 8.1和Windows Phone 8.1中的WinRT WebView
控件不会更新其Source
属性以响应history.pushState
或history.replaceState
,这可以修改当前的URL来自JavaScript而不实际导航到不同的页面。
您可以通过创建新的空白应用,将名为 WebView 的WebView
控件添加到 MainPage.xaml 并使用以下内容替换构造函数来轻松验证:
public MainPage()
{
this.InitializeComponent();
var timer = new DispatcherTimer() { Interval = TimeSpan.FromSeconds(1) };
timer.Tick += (o, e) => Debug.WriteLine("WebView.Source: " + WebView.Source);
timer.Start();
// you could also replace the URL with a simpler demo page like this one:
// http://www.skjapp.com/wp-content/uploads/2012/06/HistoryAPI-pushState.htm
WebView.Navigate(new Uri("http://try.discourse.org"));
}
在Discourse上打开任何讨论主题都不会更新WebView.Source
。本机IE浏览器正确处理这个问题,并且旧的Windows Phone Silverlight WebBrowser
控件也很奇怪。
那么,我做错了什么或者是否有其他方法可以获得正确支持HTML5历史记录API的WebView
的当前网址?