1# 在新窗口中打开页面 2 3 4Web组件提供了在新窗口打开页面的能力,开发者可以通过[multiWindowAccess()](../reference/arkui-ts/ts-basic-components-web.md#multiwindowaccess9)接口来设置是否允许网页在新窗口打开。当有新窗口打开时,应用侧会在[onWindowNew()](../reference/arkui-ts/ts-basic-components-web.md#onwindownew9)接口中收到Web组件新窗口事件,开发者需要在此接口事件中,新建窗口来处理Web组件窗口请求。 5 6 7> **说明:** 8> 9> 如果开发者在[onWindowNew()](../reference/arkui-ts/ts-basic-components-web.md#onwindownew9)接口通知中不需要打开新窗口,需要将[ControllerHandler.setWebController()](../reference/arkui-ts/ts-basic-components-web.md##setwebcontroller9)接口返回值设置成null。 10 11 12如下面的本地示例,当用户点击“新窗口中打开网页”按钮时,应用侧会在[onWindowNew()](../reference/arkui-ts/ts-basic-components-web.md#onwindownew9)接口中收到Web组件新窗口事件。 13 14 15- 应用侧代码。 16 17 创建新窗口的方法可参考[Web开发相关例子](https://gitee.com/openharmony/applications_app_samples/tree/master/code/BasicFeature/Web/Browser)。 18 19 ```ts 20 // xxx.ets 21 import web_webview from '@ohos.web.webview'; 22 @Entry 23 @Component 24 struct WebComponent { 25 controller: web_webview.WebviewController = new web_webview.WebviewController(); 26 build() { 27 Column() { 28 Web({ src:$rawfile("window.html"), controller: this.controller }) 29 .multiWindowAccess(true) 30 .onWindowNew((event) => { 31 console.info("onWindowNew..."); 32 var popController: web_webview.WebviewController = new web_webview.WebviewController(); 33 // 开发者需要在此处新建窗口,跟popController关联,并且将popController返回给Web组件。如果不需要打开新窗口请将返回值设置为event.handler.setWebController(null); 34 event.handler.setWebController(popController); 35 }) 36 } 37 } 38 } 39 ``` 40 41 42- window.html页面代码。 43 44 ```html 45 <!DOCTYPE html> 46 <html> 47 <head> 48 <meta charset="utf-8"> 49 <title>WindowEvent</title> 50 </head> 51 52 <body> 53 <input type="button" value="新窗口中打开网页" onclick="OpenNewWindow()"> 54 <script type="text/javascript"> 55 function OpenNewWindow() 56 { 57 let openedWindow = window.open("about:blank", "", "location=no,status=no,scrollvars=no"); 58 if (openedWindow) { 59 openedWindow.document.body.write("<p>这是我的窗口</p>"); 60 } else { 61 log.innerHTML = "window.open failed"; 62 } 63 } 64 </script> 65 </body> 66 </html> 67 ``` 68