这听起来非常简单,但我无法从谷歌找到任何解决方案。
在我的页面上,我有一个关闭页面的按钮
<Button onClick={() => window.close()} >Close</Button>
但每次触发按钮时,我都会收到警告
Scripts may close only the windows that were opened by it.
我正在使用react-native
用于我的移动应用,它连接到keycloak
到(通过WebView
RN)开放的Facebook身份验证页面,之后,keycloak
重定向到success
页面(localhost/login/success
,其中包含关闭页面本身的按钮。页面位于next.js
下方。即使我直接在浏览器上访问localhost/login/success
,我也无法关闭页面
更新我设法使用onNavigationStateChange
进行解决,并检查navState.url
是否包含success/login
来触发状态并关闭{{ 1}}。但我仍然对如何在WebView
关闭窗口感到好奇?
答案 0 :(得分:2)
您可以使用onMessage
道具在WebView和React-Native之间进行通信。
webview
调用时调用的函数window.postMessage
。设置此属性将注入一个postMessage
全球webview
,但仍会致电 预先存在的值postMessage
。
示例强>
_onMessage = (message) => {
console.log(message);
}
render() {
return (<WebView ref={(ref) => { this.webView = ref; }} onMessage={this._onMessage} ..otherProps />);
}
// In your webview inject this code
<script>
window.postMessage("Sending data from WebView");
</script>