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.WebViewTransport#setWebView(WebView) WebView.WebViewTransport.setWebView(WebView)来传输新的 WebView。

返回

如果主机应用程序将创建新窗口,则此方法应返回 true ,在这种情况下,resultMsg 应发送到其目标。 否则,此方法应返回 falsefalse从此方法返回,但也发送 resultMsg 将导致未定义的行为。

属性

注解

请求主机应用程序创建新窗口。 如果主机应用程序选择遵循此请求,则应从此方法返回 true ,创建新的 WebView 来托管窗口,将其插入视图系统,并将所提供的 resultMsg 消息作为参数发送到其目标。 如果主机应用程序选择不遵循请求,则应从此方法返回 false 。 此方法的默认实现不执行任何操作,因此返回 false

应用程序通常不允许在 isUserGesture 标志为 false 时创建窗口,因为这可能是不需要的弹出窗口。

应用程序应注意新窗口的显示方式:不要简单地将其覆盖在现有 WebView 上,因为这可能会误导用户查看的站点。 如果应用程序显示主页的 URL,请确保也以类似的方式显示新窗口的 URL。 如果应用程序不显示 URL,请考虑完全禁止创建新窗口。

<b>注意:</b> 无法判断哪个页面请求了新窗口:请求可能源自 WebView 中的第三方 iframe。

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

本页的某些部分是根据 创建和共享的工作进行的修改,并根据 许可证中所述的条款使用。

适用于