1

这听起来非常简单,但我无法从谷歌找到任何解决方案。

在我的页面上,我有一个按钮来关闭页面本身

<Button onClick={() => window.close()} >Close</Button> 

但是每次触发按钮时,我都会收到警告

Scripts may close only the windows that were opened by it.

我正在react-native为我的移动应用程序使用它,它连接到keycloak(通过WebViewRN)打开的 Facebook 身份验证页面,然后keycloak重定向到success页面(localhost/login/success该页面具有关闭页面本身的按钮。页面位于下方next.js)。即使我localhost/login/success直接在浏览器上访问,我也无法关闭页面

更新我设法通过使用onNavigationStateChange并检查是否navState.url包含success/login触发状态并关闭WebView. 但我仍然很好奇如何关闭窗口React

4

1 回答 1

2

您可以使用onMessageprop 在 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>
于 2017-10-21T07:07:58.680 回答