我有一個WebView組件,用於在我的應用程序中顯示HTML廣告。當用戶點擊WebView中的廣告時,我想在外部瀏覽器中打開廣告鏈接。我怎麼做?在WebView中的外部瀏覽器中打開鏈接(WinRT)
我需要WP7瀏覽器的OnNavigating之類的東西。我嘗試了WebView的Tapped事件,但即使設置了IsTapEnabled = true,它也永遠不會被調用。我需要類似
我有一個WebView組件,用於在我的應用程序中顯示HTML廣告。當用戶點擊WebView中的廣告時,我想在外部瀏覽器中打開廣告鏈接。我怎麼做?在WebView中的外部瀏覽器中打開鏈接(WinRT)
我需要WP7瀏覽器的OnNavigating之類的東西。我嘗試了WebView的Tapped事件,但即使設置了IsTapEnabled = true,它也永遠不會被調用。我需要類似
您需要爲此使用ScriptNotify事件。以下是我處理場景的方式(使用NavigateToString)。如果您從URL中檢索Web視圖內容,則需要修改HTML才能使其工作。
在頁面上下面的JavaScript代碼添加到您的HTML
<script type="text/javascript">for (var i = 0; i < document.links.length; i++) { document.links[i].onclick = function() { window.external.notify('LaunchLink:' + this.href); return false; } }</script>
這增加了一個onclick處理程序的每一個環節(< A HREF = 「...」 > < /一>)。 window.external.notify是一個在Webview中工作的Javascript方法。
將ScriptNotify事件處理程序添加到webview。
WebView.ScriptNotify += WebView_ScriptNotify;
聲明事件處理程序,你,如果你正在使用外部URL
async private void WebView_ScriptNotify(object sender, NotifyEventArgs e)
{
try
{
string data = e.Value;
if (data.ToLower().StartsWith("launchlink:"))
{
await Launcher.LaunchUriAsync(new Uri(data.Substring("launchlink:".Length), UriKind.Absolute));
}
}
catch (Exception)
{
// Could not build a proper Uri. Abandon.
}
}
注意,這已被添加到的WebView允許尤里斯白名單(http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.webview.scriptnotify僅供參考) 。
嘗試處理NavigationStarting事件。 在這裏你可以攔截並取消加載URL。 您可以過濾在Web視圖中打開哪個鏈接,以及在默認瀏覽器中打開哪個鏈接。
private async void webView_NavigationStarting(WebView sender, WebViewNavigationStartingEventArgs args)
{
if(null != args.Uri && args.Uri.OriginalString == "URL OF INTEREST")
{
args.Cancel = true;
await Launcher.LaunchUriAsync(args.Uri);
}
}
謝謝!這對我有效。 –
但是超鏈接到文件呢?這不起作用http://stackoverflow.com/questions/28886198/hyperlink-click-is-not-firing/ –
在這種情況下,嘗試更改UriKind.Absolute UriKind.Relative – Akinwale