在使用RN的WebView时有时会弹出:
Setting onMessage on a WebView overrides existing values of window.postMessage, but a previous value was defined 错误的一个界面,关闭后不影响正常使用。
简述下解决方案:
1、在使用WebView的界面添加如下代码
patchPostMessageFunction = function() { var originalPostMessage = window.postMessage; var patchedPostMessage = function(message: any, targetOrigin: string, transfer: Transferable[] | undefined) { originalPostMessage(message, targetOrigin, transfer); }; patchedPostMessage.toString = function() { return String(Object.hasOwnProperty).replace('hasOwnProperty', 'postMessage'); }; window.postMessage = patchedPostMessage; }; patchPostMessageJsCode = '(' + String(this.patchPostMessageFunction) + ')();';
2、WebView中设置injectedJavaScript属性
<WebView injectedJavaScript={this.patchPostMessageJsCode} />
参考地址:https://github.com/facebook/react-native/issues/10865#issuecomment-269847703