WebView 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
提供在應用程式中裝載 HTML 內容的控制項。
public ref class WebView sealed : FrameworkElement
/// [Windows.Foundation.Metadata.Activatable(Windows.UI.Xaml.Controls.IWebViewFactory4, 65536, Windows.Foundation.UniversalApiContract)]
/// [Windows.Foundation.Metadata.Activatable(65536, Windows.Foundation.UniversalApiContract)]
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class WebView final : FrameworkElement
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
/// [Windows.Foundation.Metadata.Activatable(Windows.UI.Xaml.Controls.IWebViewFactory4, 65536, "Windows.Foundation.UniversalApiContract")]
/// [Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
class WebView final : FrameworkElement
[Windows.Foundation.Metadata.Activatable(typeof(Windows.UI.Xaml.Controls.IWebViewFactory4), 65536, typeof(Windows.Foundation.UniversalApiContract))]
[Windows.Foundation.Metadata.Activatable(65536, typeof(Windows.Foundation.UniversalApiContract))]
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class WebView : FrameworkElement
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
[Windows.Foundation.Metadata.Activatable(typeof(Windows.UI.Xaml.Controls.IWebViewFactory4), 65536, "Windows.Foundation.UniversalApiContract")]
[Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
public sealed class WebView : FrameworkElement
Public NotInheritable Class WebView
Inherits FrameworkElement
<WebView .../>
- 繼承
- 屬性
Windows 需求
裝置系列 |
Windows 10 (已於 10.0.10240.0 引進)
|
API contract |
Windows.Foundation.UniversalApiContract (已於 v1.0 引進)
|
範例
下列程式碼範例示範如何將 WebView 巡覽至 名為 的 TextBoxAddress
中包含的 URI。
try
{
Uri targetUri = new Uri(Address.Text);
webViewA.Navigate(targetUri);
}
catch (FormatException ex)
{
// Bad address.
}
下列程式碼範例示範如何將本機 HTML 載入 WebView 控制項。
webViewB.NavigateToString(
"<html><body><h2>This is an HTML fragment</h2></body></html>");
備註
使用 WebView 控制項在應用程式中裝載 Web 內容。 Surface Hub 或 Xbox 的應用程式必須使用此 WebView。
重要
針對傳統型應用程式,建議您使用 WebView2 控制項,這是適用于 UWP 的 Windows UI 程式庫 2 (WinUI 2) 的一部分。 WebView2 使用 Microsoft Edge (Chromium) 作為轉譯引擎,在應用程式中顯示 Web 內容。 如需詳細資訊,請參閱 Microsoft Edge WebView2 簡介、 開始使用 WinUI 2 中的 WebView2 (UWP) 應用程式,以及 WinUI API 參考中的 WebView2 。
重要
XAML Islands:XAML Islands應用程式中不支援此控制項。 如需替代方案,請參閱 XAML Islands - Web 檢視控制項。
WebView 不是 Control 子類別,因此沒有控制項範本。 您可以設定各種屬性來控制 WebView 的某些視覺層面。 顯示區域受限於 Width 和 Height 屬性。 若要轉譯、縮放、扭曲及旋轉 WebView,請使用 RenderTransform 屬性。 若要控制 WebView 的不透明度,請設定 Opacity 屬性。 若要指定在 HTML 內容未指定色彩時當成網頁背景使用的色彩,請設定 DefaultBackgroundColor 屬性。
您可以使用 DocumentTitle 屬性,取得目前顯示在 WebView 中的 HTML 檔案標題。
雖然 WebView 不是 Control 子類別,但它會收到鍵盤輸入焦點並參與 Tab 序列。 它提供 Focus 方法,以及 GotFocus 和 LostFocus 事件,但是沒有 Tab 相關的屬性。 它在 Tab 順序中的位置,與在 XAML 文件順序中的位置一樣。 索引標籤序列包含 WebView 內容中可接收輸入焦點的所有元素。
如事件資料表中所述,WebView 不支援繼承自 UIElement的大部分使用者輸入事件,例如 KeyDown、 KeyUp和 PointerPressed。 常見的因應措施是搭配使用 InvokeScriptAsync 搭配 JavaScripteval 函式來使用 HTML 事件處理常式,並使用來自 HTML 事件處理常式的 window.external.notify ,以使用 WebView.ScriptNotify通知應用程式。
在針對 Windows 10 編譯的應用程式中,WebView 會使用 Microsoft Edge 轉譯引擎來顯示 HTML 內容。 在針對 Windows 8 或 Windows 8.1 編譯的應用程式中,WebView 會在檔案模式中使用 Internet Explorer 11。 它不支援任何 Microsoft ActiveX 控制項或外掛程式,例如 Microsoft Silverlight 或可攜式檔案格式 (PDF) 檔案。
瀏覽至內容
WebView 提供數個適用于基本流覽的 API: GoBack、 GoForward、 Stop、 Refresh、 CanGoBack和 CanGoForward。 您可以使用這些元素為您的應用程式新增典型的網頁瀏覽功能。
若要設定 WebView 的初始內容,請在 XAML 中設定 Source 屬性。 XAML 剖析器會自動將字串轉換為 Uri。
<!-- Source file is on the web. -->
<WebView x:Name="webViewA" Source="http://www.contoso.com"/>
<!-- Source file is in local storage. -->
<WebView x:Name="webViewB" Source="ms-appdata:///local/intro/welcome.html"/>
<!-- Source file is in the app package. -->
<WebView x:Name="webViewC" Source="ms-appx-web:///help/about.html"/>
Source屬性可以在程式碼中設定,但不要這麼做,您通常會使用其中一個Navigate方法來載入程式碼中的內容。
若要載入 Web 內容,請使用Navigate方法搭配使用HTTP 或 HTTPs配置的URI。
webViewA.Navigate(new Uri("http://www.contoso.com"));
若要使用 POST 要求和 HTTP 標頭流覽至統一資源識別項 (URI) ,請使用 NavigateWithHttpRequestMessage 方法。 此方法僅支援 HttpRequestMessage.Method 屬性值的 HttpMethod.Post 和 HttpMethod.Get。
若要從應用程式的LocalFolder或TemporaryFolder資料存放區載入未壓縮和未加密的內容,請使用Navigate方法搭配使用ms-appdata 配置的URI。 此配置的 WebView 支援需要您將內容放在本機或暫存資料夾下的子資料夾中。 這可讓您流覽至統一資源識別項 (URI) ,例如 ms-appdata:///local/ folder檔案.html和 ms-appdata:///temp/ folder//檔案.html。 (若要載入壓縮或加密的檔案,請參閱 NavigateToLocalStreamUri。)
所有這些第一層子資料夾都是與其他第一層子資料夾中的內容隔離。 例如,您可以流覽至 ms-appdata:///temp/folder1/file.html,但此檔案中不能有 ms-appdata:///temp/folder2/file.html 的連結。 不過,您仍然可以使用ms-appx-web配置連結至應用程式套件中的 HTML 內容,以及使用HTTP 和 HTTPs統一資源識別項 (URI ) 配置來連結至 Web 內容。
webViewA.Navigate(new Uri("ms-appdata:///local/intro/welcome.html"));
若要從應用程式套件中載入內容,請使用 Navigate 方法搭配使用 ms-appx-web 配置 的 Uri。
webViewA.Navigate(new Uri("ms-appx-web:///help/about.html"));
您可以使用 NavigateToLocalStreamUri 方法,透過自訂解析器載入本機內容。 這適用於更進階的案例,例如,下載和快取 Web 內容以進行離線使用,或是解壓縮壓縮檔中的內容。
回應瀏覽事件
WebView 提供數個事件,可讓您用來回應流覽和內容載入狀態。 根 WebView 內容的發生順序如下:
- NavigationStarting - 會在 WebView 巡覽至新內容之前發生。 您可以將 WebViewNavigationStartingEventArgs.Cancel 屬性設定為 true,以取消此事件的處理常式導覽。
webViewA.NavigationStarting += webViewA_NavigationStarting;
private void webViewA_NavigationStarting(object sender, WebViewNavigationStartingEventArgs args)
{
// Cancel navigation if URL is not allowed. (Implemetation of IsAllowedUri not shown.)
if (!IsAllowedUri(args.Uri))
args.Cancel = true;
}
- ContentLoading - 會在 WebView 開始載入新內容時發生。
webViewA.ContentLoading += webViewA_ContentLoading;
private void webViewA_ContentLoading(WebView sender, WebViewContentLoadingEventArgs args)
{
// Show status.
if (args.Uri != null)
{
statusTextBlock.Text = "Loading content for " + args.Uri.ToString();
}
}
- DOMContentLoaded - 在 WebView 完成剖析目前的 HTML 內容時發生。
webViewA.DOMContentLoaded += webViewA_DOMContentLoaded;
private void webViewA_DOMContentLoaded(WebView sender, WebViewDOMContentLoadedEventArgs args)
{
// Show status.
if (args.Uri != null)
{
statusTextBlock.Text = "Content for " + args.Uri.ToString() + " has finished loading";
}
}
- NavigationCompleted - 當 WebView 完成載入目前內容或流覽失敗時發生。 若要判斷瀏覽是否失敗,請檢查 WebViewNavigationCompletedEventArgs 類別的 IsSuccess 和 WebErrorStatus 屬性。
webViewA.NavigationCompleted += webViewA_NavigationCompleted;
private void webViewA_NavigationCompleted(WebView sender, WebViewNavigationCompletedEventArgs args)
{
if (args.IsSuccess == true)
{
statusTextBlock.Text = "Navigation to " + args.Uri.ToString() + " completed successfully.";
}
else
{
statusTextBlock.Text = "Navigation to: " + args.Uri.ToString() +
" failed with error " + args.WebErrorStatus.ToString();
}
}
WebView 內容中每個 iframe 的類似事件會以相同順序發生:
- FrameNavigationStarting - 發生在 WebView 中的框架流覽至新內容之前。
- FrameContentLoading - 在 WebView 中的框架開始載入新內容時發生。
- FrameDOMContentLoaded - 在 WebView 中的框架完成剖析其目前的 HTML 內容時發生。
- FrameNavigationCompleted - 在 WebView 中的框架完成載入其內容時發生。
回應潛在問題
您可以回應內容的潛在問題,例如長時間執行的腳本、WebView 無法載入的內容,以及不安全內容的警告。
指令碼正在執行時,您的應用程式看起來會像沒有回應。 當 WebView 執行 JavaScript 並提供中斷腳本的機會時, LongRunningScriptDetected 事件會定期發生。 若要判斷指令碼已執行多久的時間,請檢查 WebViewLongRunningScriptDetectedEventArgs 的 ExecutionTime 屬性。 若要停止指令碼,請將事件引數 StopPageScriptExecution屬性設定為 true。 除非在後續的 WebView 流覽期間重載已停止的腳本,否則不會再次執行已停止的腳本。
WebView 控制項無法裝載任意檔案類型。 嘗試載入 WebView 無法裝載的內容時,會發生 UnviewableContentIdentified 事件。 您可以處理此事件並通知使用者,或使用 Launcher 類別將檔案重新導向至外部瀏覽器或另一個應用程式。
同樣地,當 Web 內容中叫用不支援的統一資源識別項 (URI) 配置時,就會發生 UnsupportedUriSchemeIdentified 事件,例如 fbconnect:// 或 mailto://。 您可以處理此事件以提供自訂行為,而不是允許預設系統啟動器啟動統一資源識別項 (URI) 。
當 WebView 顯示 SmartScreen 篩選器回報為 unsafe 的內容警告頁面時,就會發生 UnsafeContentWarningDisplaying 事件。 如果使用者選擇繼續瀏覽,則後續的頁面瀏覽不會顯示警告,也不會引發事件。
處理 WebView 內容的特殊案例
您可以使用 ContainsFullScreenElement 屬性和 ContainsFullScreenElementChanged 事件,來偵測、回應、啟用網頁內容中的全螢幕體驗 (例如全螢幕影片播放)。 例如,您可以使用 ContainsFullScreenElementChanged 事件來調整 WebView 的大小以佔用整個應用程式檢視,或如下列範例所示,在需要全螢幕 Web 體驗時,將視窗化應用程式置於全螢幕模式中。
// Assume webView is defined in XAML
webView.ContainsFullScreenElementChanged += webView_ContainsFullScreenElementChanged;
private void webView_ContainsFullScreenElementChanged(WebView sender, object args)
{
var applicationView = ApplicationView.GetForCurrentView();
if (sender.ContainsFullScreenElement)
{
applicationView.TryEnterFullScreenMode();
}
else if (applicationView.IsFullScreenMode)
{
applicationView.ExitFullScreenMode();
}
}
您可以使用 NewWindowRequested 事件來處理下列情況:託管的網頁內容要求顯示新視窗 (例如快顯視窗) 時。 您可以使用另一個 WebView 控制項來顯示所要求視窗的內容。
使用 PermissionRequested 事件,以啟用需要特殊功能的 Web 功能。 這些目前包含地理位置、IndexedDB 存放區,以及使用者音訊和視訊 (例如,從麥克風或網路攝影機)。 如果您的應用程式存取使用者位置或使用者媒體,則仍需要在應用程式資訊清單中宣告此功能。 例如,在 Package.appxmanifest 中,使用地理位置的應用程式最少需要下列功能宣告:
<Capabilities>
<Capability Name="internetClient"/>
<DeviceCapability Name="location"/>
</Capabilities>
除了處理 PermissionRequested 事件的應用程式之外,使用者還必須核准要求位置或媒體功能之應用程式的標準系統對話方塊,以啟用這些功能。
以下範例示範應用程式如何從 Bing 啟用地圖中的地理位置︰
// Assume webView is defined in XAML
webView.PermissionRequested += webView_PermissionRequested;
private void webView_PermissionRequested(WebView sender, WebViewPermissionRequestedEventArgs args)
{
if (args.PermissionRequest.PermissionType == WebViewPermissionType.Geolocation &&
args.PermissionRequest.Uri.Host == "www.bing.com")
{
args.PermissionRequest.Allow();
}
}
如果您的 app 需要使用者輸入或其他非同步作業來回應權限要求,請使用 WebViewPermissionRequest 的 Defer 方法來建立可稍後處理的 WebViewDeferredPermissionRequest。 請參閱 WebViewPermissionRequest.Defer。
如果使用者必須安全地登出裝載于 WebView 的網站,或安全性很重要的其他情況下,請呼叫靜態方法 ClearTemporaryWebDataAsync ,以清除 WebView 會話中的所有本機快取內容。 這可以防止惡意使用者存取敏感性資料。
與 WebView 內容互動
您可以使用 InvokeScriptAsync 方法來叫用或插入腳本到 WebView 內容,以及 ScriptNotify 事件,以從 WebView 內容中取得資訊,以與 WebView 的內容互動。
若要在 WebView 內容內叫用 JavaScript,請使用 InvokeScriptAsync 方法。 叫用的指令碼可以只傳回字串值。
例如,如果名為 webViewA
的 WebView 內容包含採用 3 個參數的函 setDate
式,您可以像這樣叫用它。
string[] args = {"January", "1", "2000"};
string returnValue = await webViewA.InvokeScriptAsync("setDate", args);
您可以搭配使用 InvokeScriptAsync 與 JavaScript eval 函式,來將內容插入網頁中。
在這裡,XAML TextBox 的文字 () nameTextBox.Text
會寫入裝載于 的 HTML 頁面中 webViewA
的 div。
private async void Button_Click(object sender, RoutedEventArgs e)
{
string functionString = String.Format("document.getElementById('nameDiv').innerText = 'Hello, {0}';", nameTextBox.Text);
await webViewA.InvokeScriptAsync("eval", new string[] { functionString });
}
WebView 內容中的腳本可以使用 window.external.notify 搭配字串參數,將資訊傳回您的應用程式。 若要接收這些訊息,請處理 ScriptNotify 事件。
若要讓外部網頁在呼叫window.external.notify時引發ScriptNotify事件,您必須在應用程式資訊清單的ApplicationContentUriRules區段中包含頁面的統一資源識別項 (URI) 。 (您可以在 Microsoft Visual Studio 的 Package.appxmanifest designer.) Content URI 索引標籤上執行此動作。此清單中的 URI 必須使用 HTTPS,而且可能包含子域萬用字元 (例如,HTTPs://.microsoft.com) ,但不能包含網域萬用字元 (例如,HTTPs://.com 和 HTTPs://。) 。 資訊清單需求不適用於源自應用程式套件的內容、使用 ms-local-stream:// URI 的內容,或使用 NavigateToString 載入的內容。
存取 WebView 中的Windows 執行階段
從 Windows 10 開始,您可以使用AddWebAllowedObject方法,將原生類別的實例從 Windows 執行階段 元件插入至 WebView 的 JavaScript 內容。 這可讓您在 WebView 的 JavaScript 內容中完整存取該物件的原生方法、屬性和事件。 類別必須使用 AllowForWeb 屬性進行裝飾。
例如,此程式碼會將從 Windows 執行階段 元件匯入的 MyClass
實例插入至 WebView。
private void webView_NavigationStarting(WebView sender, WebViewNavigationStartingEventArgs args)
{
if (args.Uri.Host == "www.contoso.com")
{
webView.AddWebAllowedObject("nativeObject", new MyClass());
}
}
如需詳細資訊,請參閱 WebView.AddWebAllowedObject。
此外,WebView 中受信任的 JavaScript 內容也可以直接存取 Windows RuntimeAPI。 這可為 WebView 中裝載的 Web 應用程式提供強大的原生功能。 若要啟用此功能,必須將信任內容的統一資源識別項 (URI) 新增至 Package.appxmanifest 中應用程式 ApplicationContentUriRules 中的 allowlist,WindowsRuntimeAccess 特別設定為 「all」。
這個範例示範應用程式資訊清單的一個區段。 在這裡,會將本機統一資源識別項 (URI) 授與Windows 執行階段的存取權。
<Applications>
<Application Id="App"
...
<uap:ApplicationContentUriRules>
<uap:Rule Match="ms-appx-web:///Web/App.html" WindowsRuntimeAccess="all" Type="include"/>
</uap:ApplicationContentUriRules>
</Application>
</Applications>
網頁內容裝載的選項
從 Windows 10 開始,您可以使用WebViewSettings類型的WebView.Settings屬性 () 來控制是否已啟用 JavaScript 和 IndexedDB。 例如,如果您使用 WebView 來顯示嚴格靜態內容,您可能會想要停用 JavaScript 以獲得最佳效能。
擷取 WebView 內容
若要與其他應用程式共用 WebView 內容,請使用 CaptureSelectedContentToDataPackageAsync 方法,此方法會將選取的內容傳回為 DataPackage。 這是非同步方法,因此您必須使用延遲,防止 DataRequested 事件處理常式在非同步呼叫完成之前返回。
若要取得 WebView 目前內容的預覽影像,請使用 CapturePreviewToStreamAsync 方法。 這個方法會建立目前內容的映像,並將它寫入指定的資料流中。
執行模式
根據預設,WebView 內容會裝載于桌面裝置系列裝置上裝置上的 UI 執行緒上,並關閉所有其他裝置上的 UI 執行緒。 您可以使用 WebView.DefaultExecutionMode 靜態屬性,來查詢目前用戶端的預設執行緒行為。 必要時,您可以使用 WebView(WebViewExecutionMode) 建構函式來覆寫這個行為。
支援的 WebViewExecutionMode 值如下:
- SameThread - WebView 內容裝載于 UI 執行緒上。
- SeparateThread - WebView 內容裝載于 UI 執行緒以外的個別執行緒上。
- SeparateProcess - (Windows 10 1803 版或更新版本) WebView 內容裝載于應用程式進程以外的個別進程上。 所有應用程式的 WebView 實例都會共用相同的個別進程,每個 WebView 實例沒有個別的進程。
在不同的進程中執行時,WebView 會區分兩種行為差異:
- WebView 進程可能會終止。 您可以藉由接聽 SeparateProcessLost 事件來收到此通知。
- WebView 程式可以非同步拒絕鍵盤焦點。 在此情況下,WebView.Focus 方法會傳回 true,然後立即 (但以非同步方式) ,焦點會離開 WebView。 (移動焦點的其他方式類似,例如 FocusManager.TryMoveFocus.) 您可以使用FocusManager.TryFocusAsync 或 FocusManager.TryMoveFocusAsync API 更明確地追蹤此動作。
此範例示範如何建立 WebView 控制項,該控制項會在與主應用程式不同的進程中執行,並在遺失個別進程時重新建立。
<Grid>
<Border x:Name="WebViewBorder" Loaded="WebViewBorder_Loaded" />
</Grid>
...
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
var webView = new WebView(WebViewExecutionMode.SeparateProcess);
WebViewBorder.Child = webView;;
InitializeWebView(webView);
}
void InitializeWebView(WebView webView)
{
webView.Source = this.WebViewSourceUri;
webView.SeparateProcessLost += (sender, e) =>
{
var newWebView = new WebView(WebViewExecutionMode.SeparateProcess);
InitializeWebView(newWebView);
WebViewBorder.Child = newWebView;
};
}
}
注意
在行動裝置上的 UI 執行緒上裝載內容時,可能會發生效能問題,因此當您變更 DefaultExecutionMode時,請務必在所有目標裝置上進行測試。
裝載 UI 執行緒外內容的 WebView 與需要手勢從 WebView 控制項傳播至父控制項的父控制項不相容,例如 FlipView、 ScrollViewer和其他相關控制項。 這些控制項將無法接收從執行緒外 WebView 起始的手勢。 此外,不直接支援列印關閉執行緒網頁內容;您應該改為使用 WebViewBrush 填滿來列印元素。
個別進程中 WebView 的焦點行為
無論是在應用程式進程或個別進程中執行,您都可以呼叫 WebView.Focus 方法,將焦點設定為 WebView。 這相當於 Control.Focus 和 Hyperlink.Focus 方法 (請注意,WebView 不會衍生自 Control) 。
同樣地,FocusManager類別上的數種方法可能會影響 WebView (或 Control 或 Hyperlink) :TryMoveFocus、FindNextFocusableElement、FindLastFocusableElement和GetFocusedElement。 例如,TryMoveFocus 會將焦點移至 WebView,而 GetFocusedElement 會傳回具有焦點的 WebView。
最後,將焦點移至 WebView 或從 WebView 移出會引發焦點事件,同時在 WebView 本身和失去或接收焦點的專案上。 這些事件包括 LosingFocus、 LostFocus、 GettingFocus和 GotFocus。 例如,當焦點從 Control 移至 WebView 時,Control 會引發 LosingFocus 和 LostFocus 事件,而 WebView 則會引發 GettingFocus 和 GotFocus 事件。
當 WebView 在不同的進程中執行時,這些 API 的行為會稍微變更。 假設 WebView 可設定焦點,WebView.Focus 方法會傳回 true (成功) ,但焦點尚未實際移動。 如果呼叫 FocusManager.TryMoveFocus 方法而不是 WebView.Focus 方法,而且它會將 WebView 識別為下一個可設定焦點的專案,則也是如此。
行為的差異如下:
- 除非非同步作業完成,否則 FocusManager.GetFocusedElement 不會傳回 WebView。
- 失去焦點的控制項會同步接收其 LosingFocus 事件;不過,除非非同步作業完成,否則不會收到 LostFocus。
- 同樣地,GettingFocus 事件會在 WebView 上同步發生;不過,除非非同步作業完成,否則不會引發 GotFocus 事件。
如果您改為呼叫 FocusManager.TryFocusAsync,則不會變更此變更。 不過,非同步方法可讓您判斷焦點變更是否成功。
在不同的進程中呼叫 WebView 以外的元素上呼叫 FocusManager.TryMoveFocusAsync 將會同步完成。
此範例示範如何將焦點移至下一個邏輯元素,但如果失敗,請將焦點還原至其初始位置。
async void MoveFocus(WebView webView))
{
FocusMovementResult result;
result = await FocusManager.TryFocusAsync(webView, FocusState.Programmatic);
if (!result.Succeeded)
{
// Reset focus to the starting position
this.Focus(FocusState.Programmatic);
}
}
使用警示
如果 WebView 中裝載的網頁使用 JavaScript 警示 函式,則不會顯示。 這是針對所有 WebView 版本所設計。
您可以攔截 警示 所顯示的資訊,並在主應用程式中使用它。 這是否可行取決於頁面的撰寫方式,以及您是否擁有其控制權。 有一個範例可用來示範執行這項操作的可能技術。 此範例是針對 Windows 8.1 和 Windows Phone 8.1 所撰寫,但也適用于使用 通用 Windows 平臺 (UWP) 的應用程式。 不過,這可能不適用於每個案例。
如何在通用 Windows 應用程式中的 WebView 中攔截 JavaScript 警示範例
舊版的注意事項
Windows 8.1
下列 WebView API 在 Windows 8.1中已被取代:
- LoadCompleted 和 NavigationFailed。 請改用 NavigationCompleted 。
- InvokeScript。 請改用 InvokeScriptAsync 。
- DataTransferPackage 和 DataTransferPackageProperty。 請改用 CaptureSelectedContentToDataPackageAsync 。
- AllowedScriptNotifyUris、 AnyScriptNotifyUri和 AllowedScriptNotifyUrisProperty。 請改為在應用程式資訊清單的 ApplicationContentUriRules 區段中加入頁面的 URI。
僅限在 Windows 上,您可以處理 UnsafeContentWarningDisplaying 事件。 當 WebView 顯示 SmartScreen 篩選器回報為不安全的內容警告頁面時,就會發生此事件。 如果使用者選擇繼續瀏覽,則後續的頁面瀏覽不會顯示警告,也不會引發事件。 此事件不會針對Windows Phone實作。
當您呼叫 InvokeScriptAsync 方法叫用 WebView 內的 JavaScript 時,不支援需要次要視窗的函式,例如 Alert。
Windows Phone 8
- Windows Phone 8.1 上的 WebView 與需要手勢從 WebView 控制項傳播至父控制項的父控制項不相容,例如FlipView、ScrollViewer類別和其他相關控制項。
- Windows Phone 8.1 上的 WebView 包含ContainsFullScreenElement屬性和ContainsFullScreenElementChanged事件。 這些成員無法在 Windows 上使用。
在Windows 10之前,不會針對Windows Phone實作UnsafeContentWarningDisplaying事件。
Windows 8
這些備註僅適用于針對 Windows 8 編譯的應用程式,即使在Windows 8.1或更新版本上執行時也是如此。
在 Windows 8 中,WebView 具有其他 UI 區域的特性,例如控制項無法在 WebView 之上轉譯。 這個「空間問題」是因為視窗區域在內部處理的方式,特別是輸入事件的處理方式,以及螢幕繪製的方式。 如果您想要轉譯 HTML 內容,並將其他 UI 元素放在該 HTML 內容之上,您應該使用 WebViewBrush 作為轉譯區域。 WebView 仍會提供 HTML 來源資訊,而且您透過 SourceName 屬性參考該 WebView。 WebViewBrush 沒有此重迭限制。
如果您想要顯示只偶爾有重迭內容的互動式 WebView (,例如下拉式清單或應用程式行) ,您可以在必要時暫時隱藏 WebView 控制項,使用 WebViewBrush 填滿將它取代為元素。 然後,當重迭的內容不再存在時,您可以再次顯示原始的 WebView。
注意
從 Windows 8.1 開始,已修正「空間問題」,不適用於以Windows 8.1或Windows 10為目標的應用程式。
WebView 一律會在檔案模式中使用 Internet Explorer 10。
版本歷程記錄
Windows 版本 | SDK 版本 | 新增值 |
---|---|---|
1607 | 14393 | XYFocusDown |
1607 | 14393 | XYFocusLeft |
1607 | 14393 | XYFocusRight |
1607 | 14393 | XYFocusUp |
1803 | 17134 | SeparateProcessLost |
1809 | 17763 | WebResourceRequested |
建構函式
WebView() |
初始化 WebView 類別的新實例。 |
WebView(WebViewExecutionMode) |
使用指定的執行模式,初始化 WebView 類別的新實例。 |
屬性
AccessKey |
取得或設定這個專案的便捷鍵 (助憶鍵) 。 (繼承來源 UIElement) |
AccessKeyScopeOwner |
取得或設定來源專案,這個元素會提供這個專案的存取索引鍵範圍,即使它不在來源專案的視覺化樹狀結構中也一樣。 (繼承來源 UIElement) |
ActualHeight |
取得 FrameworkElement的呈現高度。 請參閱<備註>。 (繼承來源 FrameworkElement) |
ActualOffset |
取得這個 UIElement 的位置,相對於其父系,在配置程式的排列階段期間計算。 (繼承來源 UIElement) |
ActualSize |
取得這個 UIElement 在配置程式的排列階段期間計算的大小。 (繼承來源 UIElement) |
ActualTheme |
取得專案目前使用的 UI 主題,可能與 RequestedTheme不同。 (繼承來源 FrameworkElement) |
ActualWidth |
取得 FrameworkElement的呈現寬度。 請參閱<備註>。 (繼承來源 FrameworkElement) |
AllowDrop |
取得或設定值,這個值會判斷這個 UIElement 是否可以是拖放作業的置放目標。 (繼承來源 UIElement) |
AllowedScriptNotifyUris |
注意 針對 Windows 8.1 編譯的應用程式不支援 AllowedScriptNotifyUris。 請改為更新應用程式資訊清單的 ApplicationContentUriRules 區段。 如需詳細資訊,請參閱一節。 取得或設定允許將此WebView引發ScriptNotify事件的 URI 安全清單。 |
AllowedScriptNotifyUrisProperty |
注意 針對 Windows 8.1 編譯的應用程式不支援 AllowedScriptNotifyUrisProperty。 請改為更新應用程式資訊清單的 ApplicationContentUriRules 區段。 如需詳細資訊,請參閱一節。 識別 AllowedScriptNotifyUris 相依性屬性。 |
AllowFocusOnInteraction |
取得或設定值,這個值表示當使用者與其互動時,專案是否會自動取得焦點。 (繼承來源 FrameworkElement) |
AllowFocusWhenDisabled |
取得或設定停用的控制項是否可以接收焦點。 (繼承來源 FrameworkElement) |
AnyScriptNotifyUri |
注意 針對 Windows 8.1 編譯的應用程式不支援 AnyScriptNotifyUri。 請改為更新應用程式資訊清單的 ApplicationContentUriRules 區段。 如需詳細資訊,請參閱一節。 取得值,這個值可用來設定 AllowedScriptNotifyUris 屬性,指出任何頁面都可以引發 ScriptNotify 事件至此 WebView。 |
BaseUri |
取得統一資源識別元 (URI) ,代表 XAML 載入時間 XAML 建構物件的基底統一資源識別元 (URI) 。 此屬性適用于執行時間的統一資源識別項 (URI) 解析。 (繼承來源 FrameworkElement) |
CacheMode |
取得或設定值,這個值表示轉譯的內容應該盡可能快取為複合點陣圖。 (繼承來源 UIElement) |
CanBeScrollAnchor |
取得或設定值,這個值表示 UIElement 是否可以是捲動錨定候選項目。 (繼承來源 UIElement) |
CanDrag |
取得或設定值,這個值表示是否可以將專案拖曳為拖放作業中的資料。 (繼承來源 UIElement) |
CanGoBack |
取得值,指出回溯導覽歷程記錄中是否有至少一個頁面。 |
CanGoBackProperty |
識別 CanGoBack 相依性屬性。 |
CanGoForward |
取得值,這個值表示向前流覽歷程記錄中是否有至少一個頁面。 |
CanGoForwardProperty |
識別 CanGoForward 相依性屬性。 |
CenterPoint |
取得或設定專案的中心點,也就是發生旋轉或縮放的點。 影響專案的轉譯位置。 (繼承來源 UIElement) |
Clip |
取得或設定用來定義UIElement內容的大綱的RectangleGeometry。 (繼承來源 UIElement) |
CompositeMode |
取得或設定屬性,這個屬性會宣告其父版面配置和視窗中專案的替代組合和混合模式。 這與混合 XAML/Microsoft DirectX UI 相關的元素相關。 (繼承來源 UIElement) |
ContainsFullScreenElement |
取得值,指出 WebView 是否包含支援全螢幕的專案。 |
ContainsFullScreenElementProperty |
識別 ContainsFullScreenElement 相依性屬性。 |
ContextFlyout |
取得或設定與這個專案相關聯的飛出視窗。 (繼承來源 UIElement) |
DataContext |
取得或設定 FrameworkElement的資料內容。 資料內容的常見用法是 當 FrameworkElement 使用 {Binding} 標記延伸並參與資料系結時。 (繼承來源 FrameworkElement) |
DataTransferPackage |
注意 dataTransferPackage 可能會在Windows 8.1之後變更或無法使用版本。 請改用 CaptureSelectedContentToDataPackageAsync。 取得傳遞至WebView的剪貼簿DataPackage。 |
DataTransferPackageProperty |
注意 DataTransferPackageProperty 可能會在Windows 8.1之後變更或無法使用版本。 請改用 CaptureSelectedContentToDataPackageAsync。 識別 DataTransferPackage 相依性屬性。 |
DefaultBackgroundColor |
取得或設定當 HTML 內容未指定色彩時,做為 WebView 背景使用的色彩。 |
DefaultBackgroundColorProperty |
識別 DefaultBackgroundColor 相依性屬性。 |
DefaultExecutionMode |
取得目前應用程式中 WebView 實例的預設執行緒行為。 |
DeferredPermissionRequests |
取得正在等候授與或拒絕的許可權要求集合。 |
DesiredSize |
取得此 UIElement 在版面配置程式的量值階段期間計算的大小。 (繼承來源 UIElement) |
Dispatcher |
取得與此物件相關聯的 CoreDispatcher 。 CoreDispatcher代表可以存取 UI 執行緒上DependencyObject的功能,即使程式碼是由非 UI 執行緒起始也一樣。 (繼承來源 DependencyObject) |
DocumentTitle |
取得目前顯示在 WebView中的頁面標題。 |
DocumentTitleProperty |
識別 DocumentTitle 相依性屬性。 |
ExecutionMode |
取得值,指出 WebView 裝載 UI 執行緒或非 UI 執行緒上的內容。 |
ExitDisplayModeOnAccessKeyInvoked |
取得或設定值,這個值會指定叫用存取金鑰時,是否關閉存取金鑰顯示。 (繼承來源 UIElement) |
FlowDirection |
取得或設定文字和其他 UI 元素在控制其版面配置的任何父元素內流動的方向。 這個屬性可以設定為 LeftToRight 或 RightToLeft。 在任何元素上將 FlowDirection 設定為 RightToLeft ,會將對齊方式設定為右側、從右至左的讀取順序,以及控制項從右至左流動的版面配置。 (繼承來源 FrameworkElement) |
FocusVisualMargin |
取得或設定 FrameworkElement焦點視覺效果的外部邊界。 (繼承來源 FrameworkElement) |
FocusVisualPrimaryBrush |
取得或設定筆刷,用來繪製FrameworkElement之或 |
FocusVisualPrimaryThickness |
取得或設定FrameworkElement之外部 |
FocusVisualSecondaryBrush |
取得或設定筆刷,用來繪製FrameworkElement之或 |
FocusVisualSecondaryThickness |
取得或設定FrameworkElement之 |
Height |
取得或設定 FrameworkElement的建議高度。 (繼承來源 FrameworkElement) |
HighContrastAdjustment |
取得或設定值,這個值表示當啟用高對比主題時,架構是否會自動調整專案的視覺屬性。 (繼承來源 UIElement) |
HorizontalAlignment |
取得或設定在版面配置父系中撰寫時套用至 FrameworkElement 的水準對齊特性,例如面板或專案控制項。 (繼承來源 FrameworkElement) |
IsAccessKeyScope |
取得或設定值,這個值表示專案是否定義自己的便捷鍵範圍。 (繼承來源 UIElement) |
IsDoubleTapEnabled |
取得或設定值,這個值會判斷 DoubleTapped 事件是否可能來自該專案。 (繼承來源 UIElement) |
IsHitTestVisible |
取得或設定這個 UIElement 的包含區域是否可以傳回 true 值來進行點擊測試。 (繼承來源 UIElement) |
IsHoldingEnabled |
取得或設定值,這個值會判斷 Holding 事件是否可以來自該專案。 (繼承來源 UIElement) |
IsLoaded |
取得值,這個值表示專案是否已加入至專案樹狀結構,且已準備好進行互動。 (繼承來源 FrameworkElement) |
IsRightTapEnabled |
取得或設定值,這個值會判斷 RightTapped 事件是否可能來自該專案。 (繼承來源 UIElement) |
IsTapEnabled |
取得或設定值,這個值會判斷 Tapped 事件是否可能來自該專案。 (繼承來源 UIElement) |
KeyboardAcceleratorPlacementMode |
取得或設定值,這個值表示控制項 工具提示 是否顯示其相關聯鍵盤快速鍵的按鍵組合。 (繼承來源 UIElement) |
KeyboardAcceleratorPlacementTarget |
取得或設定值,這個值表示顯示快速鍵組合的控制項 工具提示 。 (繼承來源 UIElement) |
KeyboardAccelerators |
取得使用鍵盤叫用動作的按鍵組合集合。 快速鍵通常會指派給按鈕或功能表項目。
|
KeyTipHorizontalOffset |
取得或設定值,這個值表示相對於 UIElement 放置按鍵提示的左邊或右邊。 (繼承來源 UIElement) |
KeyTipPlacementMode |
取得或設定值,這個值表示相對於 UIElement 界限放置便捷鍵按鍵提示的位置。 (繼承來源 UIElement) |
KeyTipTarget |
取得或設定值,這個值表示以便捷鍵提示為目標的專案。 (繼承來源 UIElement) |
KeyTipVerticalOffset |
取得或設定值,這個值表示相對於 UI 元素放置按鍵提示的上下距離。 (繼承來源 UIElement) |
Language |
取得或設定套用至 FrameworkElement的當地語系化/全球化語言資訊,以及套用至物件標記法和 UI 中目前 FrameworkElement 的所有子項目。 (繼承來源 FrameworkElement) |
Lights |
取得附加至這個專案的 XamlLight 物件集合。 (繼承來源 UIElement) |
ManipulationMode |
取得或設定用於UIElement行為與手勢互動的ManipulationModes值。 設定此值可讓您處理來自應用程式程式碼中這個專案的操作事件。 (繼承來源 UIElement) |
Margin |
取得或設定 FrameworkElement的外部邊界。 (繼承來源 FrameworkElement) |
MaxHeight |
取得或設定 FrameworkElement的最大高度條件約束。 (繼承來源 FrameworkElement) |
MaxWidth |
取得或設定 FrameworkElement的最大寬度條件約束。 (繼承來源 FrameworkElement) |
MinHeight |
取得或設定 FrameworkElement的最小高度條件約束。 (繼承來源 FrameworkElement) |
MinWidth |
取得或設定 FrameworkElement的最小寬度條件約束。 (繼承來源 FrameworkElement) |
Name |
取得或設定 物件的識別名稱。 當 XAML 處理器從 XAML 標記建立物件樹狀結構時,執行時間程式碼可以透過這個名稱參考 XAML 宣告的物件。 (繼承來源 FrameworkElement) |
Opacity |
取得或設定物件的不透明度程度。 (繼承來源 UIElement) |
OpacityTransition |
取得或設定 ScalarTransition,以動畫顯示 Opacity 屬性的變更。 (繼承來源 UIElement) |
Parent |
取得物件樹狀結構中這個 FrameworkElement 的父物件。 (繼承來源 FrameworkElement) |
PointerCaptures |
取得所有擷取的指標集合,表示為 Pointer 值。 (繼承來源 UIElement) |
Projection |
取得或設定轉譯這個專案時要套用 (立體效果) 的透視投影。 (繼承來源 UIElement) |
RenderSize |
取得 UIElement的最終轉譯大小。 不建議使用,請參閱。 (繼承來源 UIElement) |
RenderTransform |
取得或設定會影響 UIElement轉譯位置的轉換資訊。 (繼承來源 UIElement) |
RenderTransformOrigin |
取得或設定 RenderTransform所宣告之任何可能轉譯轉換的原點,相對於 UIElement的界限。 (繼承來源 UIElement) |
RequestedTheme |
取得或設定 UIElement (及其子項目) 用於資源判斷的 UI 主題。 您使用 RequestedTheme 指定的 UI 主題可以覆寫應用層級 RequestedTheme。 (繼承來源 FrameworkElement) |
Resources |
取得本機定義的資源字典。 在 XAML 中,您可以透過 XAML 隱含集合語法,將資源專案建立為屬性專案的子物件專案 |
Rotation |
取得或設定順時針旋轉的角度,以度為單位。 相對於 RotationAxis 和 CenterPoint 旋轉。 影響專案的轉譯位置。 (繼承來源 UIElement) |
RotationAxis |
取得或設定要繞著專案旋轉的軸。 (繼承來源 UIElement) |
RotationTransition |
取得或設定 ScalarTransition,以動畫顯示 Rotation 屬性的變更。 (繼承來源 UIElement) |
Scale |
取得或設定專案的小數位數。 相對於專案的 CenterPoint 縮放比例。 影響專案的轉譯位置。 (繼承來源 UIElement) |
ScaleTransition |
取得或設定 Vector3Transition,以動畫顯示 Scale 屬性的變更。 (繼承來源 UIElement) |
Settings |
取得 WebViewSettings 物件,其中包含啟用或停用 WebView 功能的屬性。 |
Shadow |
取得或設定 專案所轉換的陰影效果。 (繼承來源 UIElement) |
Source |
取得或設定要顯示在 WebView 控制項中之 HTML 內容的統一資源識別項 (URI) 來源。 |
SourceProperty |
識別 來源 相依性屬性。 |
Style |
取得或設定配置和轉譯期間針對這個物件套用的實例 Style 。 (繼承來源 FrameworkElement) |
TabFocusNavigation |
取得或設定值,這個值會修改 Tabbing 和 TabIndex 對此控制項的運作方式。 (繼承來源 UIElement) |
Tag |
取得或設定任意物件值,可用來儲存這個物件的自訂資訊。 (繼承來源 FrameworkElement) |
Transform3D |
取得或設定轉譯這個專案時要套用的 3D 轉換效果。 (繼承來源 UIElement) |
TransformMatrix |
取得或設定要套用至專案的轉換矩陣。 (繼承來源 UIElement) |
Transitions |
取得或設定套用至UIElement的Transition樣式專案集合。 (繼承來源 UIElement) |
Translation |
取得或設定專案的 x、y 和 z 轉譯位置。 (繼承來源 UIElement) |
TranslationTransition |
取得或設定 Vector3Transition,以動畫顯示 Translation 屬性的變更。 (繼承來源 UIElement) |
Triggers |
取得針對 FrameworkElement定義的動畫觸發程式集合。 不常使用。 請參閱<備註>。 (繼承來源 FrameworkElement) |
UIContext |
取得專案的內容識別碼。 (繼承來源 UIElement) |
UseLayoutRounding |
取得或設定值,這個值會判斷物件及其視覺子樹的轉譯是否應該使用四捨五入行為,將轉譯對齊整個圖元。 (繼承來源 UIElement) |
VerticalAlignment |
取得或設定在面板或專案控制項等父物件中撰寫時套用至 FrameworkElement 的垂直對齊特性。 (繼承來源 FrameworkElement) |
Visibility |
取得或設定 UIElement的可見度。 不會轉譯不可見的 UIElement ,也不會將其所需的大小傳達給版面配置。 (繼承來源 UIElement) |
Width |
取得或設定 FrameworkElement的寬度。 (繼承來源 FrameworkElement) |
XamlRoot |
取得或設定 |
XYFocusDown |
取得或設定當使用者按下方向板 (D 鍵) 向下時取得焦點的物件。 |
XYFocusDownNavigationStrategy |
取得或設定值,指定用來判斷向下流覽之目標元素的策略。 (繼承來源 UIElement) |
XYFocusDownProperty |
識別 XYFocusDown 相依性屬性。 |
XYFocusKeyboardNavigation |
取得或設定值,這個值會啟用或停用使用鍵盤方向箭號的流覽。 (繼承來源 UIElement) |
XYFocusLeft |
取得或設定當使用者按下方向板 (D 鍵) 左鍵時取得焦點的物件。 |
XYFocusLeftNavigationStrategy |
取得或設定值,指定用來判斷左側導覽之目標元素的策略。 (繼承來源 UIElement) |
XYFocusLeftProperty |
識別 XYFocusLeft 相依性屬性。 |
XYFocusRight |
取得或設定當使用者按下方向板 (D 鍵) 右鍵時取得焦點的物件。 |
XYFocusRightNavigationStrategy |
取得或設定值,指定用來判斷右導覽之目標元素的策略。 (繼承來源 UIElement) |
XYFocusRightProperty |
識別 XYFocusRight 相依性屬性。 |
XYFocusUp |
取得或設定當使用者按下方向板 (D 鍵) 時取得焦點的物件。 |
XYFocusUpNavigationStrategy |
取得或設定值,指定用來判斷向上流覽之目標元素的策略。 (繼承來源 UIElement) |
XYFocusUpProperty |
識別 XYFocusUp 相依性屬性。 |
方法
事件
AccessKeyDisplayDismissed |
發生于不應再顯示存取金鑰時。 (繼承來源 UIElement) |
AccessKeyDisplayRequested |
發生于使用者要求顯示存取金鑰時。 (繼承來源 UIElement) |
AccessKeyInvoked |
發生于使用者完成存取金鑰序列時。 (繼承來源 UIElement) |
ActualThemeChanged |
發生于 ActualTheme 屬性值已變更時。 (繼承來源 FrameworkElement) |
BringIntoViewRequested |
在這個專案或其中一個子代上呼叫 StartBringIntoView 時發生。 (繼承來源 UIElement) |
CharacterReceived |
發生于輸入佇列收到單一撰寫字元時。 (繼承來源 UIElement) |
ContainsFullScreenElementChanged |
發生于 WebView 目前是否包含全螢幕元素的狀態時。 |
ContentLoading |
發生于 WebView 開始載入新內容時。 |
ContextCanceled |
當內容輸入手勢繼續進入操作手勢時發生,以通知專案不應開啟內容飛出視窗。 (繼承來源 UIElement) |
ContextRequested |
發生于使用者完成內容輸入手勢時,例如按一下滑鼠右鍵。 (繼承來源 UIElement) |
DataContextChanged |
發生于 FrameworkElement.DataCoNtext 屬性的值變更時。 (繼承來源 FrameworkElement) |
DOMContentLoaded |
當 WebView 完成剖析目前的 HTML 內容時發生。 |
DoubleTapped |
發生于此元素的點擊測試區域上發生未處理的 DoubleTap 互動時。 (繼承來源 UIElement) |
DragEnter |
當輸入系統報告具有這個專案作為目標的基礎拖曳事件時發生。 (繼承來源 UIElement) |
DragLeave |
當輸入系統報告基礎拖曳事件,並將這個專案當做原點時發生。 (繼承來源 UIElement) |
DragOver |
在輸入系統回報以此項目作為可能置放目標的基礎拖曳事件時發生。 (繼承來源 UIElement) |
DragStarting |
發生于起始拖曳作業時。 (繼承來源 UIElement) |
Drop |
輸入系統報告其下以這個項目作為置放目標的置放事件時發生。 (繼承來源 UIElement) |
DropCompleted |
發生于以這個專案做為來源結束的拖放作業時。 (繼承來源 UIElement) |
EffectiveViewportChanged |
發生于 FrameworkElement的有效檢視區 變更時。 (繼承來源 FrameworkElement) |
FrameContentLoading |
發生于 WebView 中的框架開始載入新內容時。 |
FrameDOMContentLoaded |
發生于 WebView 中的框架完成剖析其目前 HTML 內容時。 |
FrameNavigationCompleted |
發生于 WebView 中的框架完成載入其內容時。 |
FrameNavigationStarting |
發生在 WebView 中的框架巡覽至新內容之前。 |
GettingFocus |
發生于 UIElement 收到焦點之前。 此事件會同步引發,以確保事件反升時不會移動焦點。 (繼承來源 UIElement) |
GotFocus |
發生于 UIElement 收到焦點時。 這個事件會以非同步方式引發,因此焦點可以在反升完成之前再次移動。 (繼承來源 UIElement) |
Holding |
發生于此元素的點擊測試區域上發生未處理的 保留 互動時。 (繼承來源 UIElement) |
KeyDown |
發生于 UIElement 有焦點時按下鍵盤按鍵時。 (繼承來源 UIElement) |
KeyUp |
發生于 UIElement 有焦點時放開鍵盤按鍵時。 (繼承來源 UIElement) |
LayoutUpdated |
發生于視覺化樹狀結構的版面配置變更時,因為配置相關屬性變更值或重新整理版面配置的其他動作。 (繼承來源 FrameworkElement) |
LoadCompleted |
注意 LoadCompleted 可能會在Windows 8.1之後變更或無法使用版本。 請改用 NavigationCompleted。 發生于最上層導覽完成且內容載入 至 WebView 控制項,或在載入期間發生錯誤時發生。 |
Loaded |
發生于 架構Element 已建構並新增至物件樹狀結構,並準備好進行互動時。 (繼承來源 FrameworkElement) |
Loading |
當 FrameworkElement 開始載入時發生。 (繼承來源 FrameworkElement) |
LongRunningScriptDetected |
在 WebView 執行 JavaScript 時定期發生,讓您停止腳本。 |
LosingFocus |
發生于 UIElement 失去焦點之前。 此事件會同步引發,以確保事件反升時不會移動焦點。 (繼承來源 UIElement) |
LostFocus |
發生于 UIElement 失去焦點時。 這個事件會以非同步方式引發,因此焦點可以在反升完成之前再次移動。 (繼承來源 UIElement) |
ManipulationCompleted |
發生于 UIElement 上的操作完成時。 (繼承來源 UIElement) |
ManipulationDelta |
輸入裝置在操作期間變更位置時發生。 (繼承來源 UIElement) |
ManipulationInertiaStarting |
在操作和慣性開始的時候,只要輸入裝置不與 UIElement 物件接觸便發生。 (繼承來源 UIElement) |
ManipulationStarted |
當輸入裝置開始在 UIElement 進行操作時發生。 (繼承來源 UIElement) |
ManipulationStarting |
發生於第一次建立操作處理器時。 (繼承來源 UIElement) |
NavigationCompleted |
當 WebView 完成載入目前內容,或流覽失敗時發生。 |
NavigationFailed |
注意 Windows 8.1之後,可能會變更或無法使用 NavigationFailed 版本。 請改用 NavigationCompleted。 發生于 WebView 無法完成流覽嘗試時。 |
NavigationStarting |
發生于 WebView 巡覽至新內容之前。 |
NewWindowRequested |
發生于使用者在 WebView 中執行動作,導致新視窗中開啟內容時。 |
NoFocusCandidateFound |
發生于使用者嘗試透過定位鍵或方向箭號 (移動焦點時) ,但焦點不會移動,因為沒有在移動方向找到焦點候選項目。 (繼承來源 UIElement) |
PermissionRequested |
發生于 WebView 中的動作需要授與該許可權時。 |
PointerCanceled |
發生于讓連絡人異常遺失連絡人的指標時。 (繼承來源 UIElement) |
PointerCaptureLost |
發生于此元素先前保留的指標擷取移至另一個專案或其他地方時。 (繼承來源 UIElement) |
PointerEntered |
發生于指標進入這個專案的點擊測試區域時。 (繼承來源 UIElement) |
PointerExited |
發生于指標離開這個專案的點擊測試區域時。 (繼承來源 UIElement) |
PointerMoved |
當指標在指標保留在這個專案的點擊測試區域中時移動時發生。 (繼承來源 UIElement) |
PointerPressed |
發生于指標裝置起始這個專案內的 Press 動作時。 (繼承來源 UIElement) |
PointerReleased |
發生于先前起始 「按下」 動作的指標裝置釋放時,同時在此元素內。 請注意, Press 動作的結尾不保證會引發 PointerReleased 事件;其他事件可能會改為引發。 如需詳細資訊,請參閱。 (繼承來源 UIElement) |
PointerWheelChanged |
發生于指標滾輪的差異值變更時。 (繼承來源 UIElement) |
PreviewKeyDown |
發生于 UIElement 有焦點時按下鍵盤按鍵時。 (繼承來源 UIElement) |
PreviewKeyUp |
發生于 UIElement 有焦點時放開鍵盤按鍵時。 (繼承來源 UIElement) |
ProcessKeyboardAccelerators |
發生于按下 鍵盤快速鍵 (或快速鍵) 時。 (繼承來源 UIElement) |
RightTapped |
發生于指標位於元素上方時發生右點選輸入壓力時。 (繼承來源 UIElement) |
ScriptNotify |
發生于 WebView 控制項中包含的內容使用 JavaScript 將字串傳遞至應用程式時。 |
SeparateProcessLost |
當 WebView 以SeparateProcess的ExecutionMode執行,而個別進程遺失時發生。 |
SizeChanged |
發生于 ActualHeight 或 ActualWidth 屬性變更 FrameworkElement上的值時。 (繼承來源 FrameworkElement) |
Tapped |
發生于此元素的點擊測試區域上發生未處理的 Tap 互動時。 (繼承來源 UIElement) |
Unloaded |
當這個物件不再連接到主物件樹狀結構時發生。 (繼承來源 FrameworkElement) |
UnsafeContentWarningDisplaying |
當 WebView 顯示 SmartScreen 篩選所回報為不安全的內容警告頁面時發生。 |
UnsupportedUriSchemeIdentified |
發生于嘗試使用 WebView 不支援的配置流覽至統一資源識別項 (URI) 時。 |
UnviewableContentIdentified |
發生于 WebView 嘗試下載不支援的檔案時。 |
WebResourceRequested |
發生于已提出 HTTP 要求時。 |