語言

WebChromeClient.OnCreateWindow(WebView, Boolean, Boolean, Message) 方法

定義

請主機應用程式建立一個新視窗。

[Android.Runtime.Register("onCreateWindow", "(Landroid/webkit/WebView;ZZLandroid/os/Message;)Z", "GetOnCreateWindow_Landroid_webkit_WebView_ZZLandroid_os_Message_Handler")]
public virtual bool OnCreateWindow(Android.Webkit.WebView? view, bool isDialog, bool isUserGesture, Android.OS.Message? resultMsg);
[<Android.Runtime.Register("onCreateWindow", "(Landroid/webkit/WebView;ZZLandroid/os/Message;)Z", "GetOnCreateWindow_Landroid_webkit_WebView_ZZLandroid_os_Message_Handler")>]
abstract member OnCreateWindow : Android.Webkit.WebView * bool * bool * Android.OS.Message -> bool
override this.OnCreateWindow : Android.Webkit.WebView * bool * bool * Android.OS.Message -> bool

參數

view
WebView

這個 WebView 是新視窗請求的來源。

isDialog
Boolean

true 如果新視窗應該是對話框,而不是全尺寸視窗。

isUserGesture
Boolean

true 如果請求是由使用者手勢發起,例如使用者點擊連結。

resultMsg
Message

當建立新的 WebView 時,應發送的訊息。 resultMsg.obj是一個 WebView.WebViewTransport 物件。 此資料應用於傳輸新的 WebView,方法是呼叫 WebView.WebViewTransport#setWebView(WebView) WebView.WebViewTransport.setWebView(WebView)

傳回

如果主機應用程式會建立新視窗,這個方法應該會回傳,這時 resultMsg 應該會傳送 true 到目標。 否則,此方法應返回 false。 從此方法回傳 false 同時傳送 resultMsg 會導致行為未定義。

屬性

備註

請主機應用程式建立一個新視窗。 若主機應用程式選擇接受此請求,應以此方法返回 true ,建立新的 WebView 來架設視窗,並將其插入檢視系統,並將提供給的 resultMsg 訊息以新 WebView 作為參數傳送給目標。 若主機應用程式選擇不執行請求,應以此方法返回 false 。 此方法的預設實作不做任何事,因此返回 false

isUserGesture 旗標為假時,應用程式通常不應該允許建立視窗,因為這可能是不想要的彈出視窗。

應用程式應謹慎顯示新視窗:不要僅僅將其覆蓋在現有的 WebView 上,否則可能會誤導使用者,誤以為他們正在瀏覽哪個網站。 如果你的應用程式顯示主頁的網址,請確保也以類似方式顯示新視窗的網址。 如果你的應用程式沒有顯示網址,可以考慮完全不允許建立新視窗。

<b>注意:</b> 沒有可靠的方法能判斷是哪個頁面請求了新視窗:請求可能來自 WebView 內的第三方 iframe。

Java 文件 android.webkit.WebChromeClient.onCreateWindow(android.webkit.WebView, boolean, boolean, android.os.Message)

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

適用於