У меня есть простая конечная точка html теста
https://testwebview.free.beeceptor.com/post
Если вы разместите URL выше, вы получите что-то вроде
<html>
<head></head>
<body>
<h1>output</h1>
</body>
</html>
В эмуляторе ios,следующий код имеет целью определить, есть ли h1 с 'output' в качестве текста.Он работает нормально в эмуляторе iOS, но НЕ в эмуляторе Android.
import React, { Component } from "react";
import { StyleSheet, Text, View } from "react-native";
import { WebView } from "react-native-webview";
import qs from 'qs';
const isLogin = `
(function() {
return document.querySelector("h1").innerHTML === "output";
})()
`;
export default class App extends Component {
_onNavigationStateChange = (event) => {
console.log('-- _onNavigationStateChange --');
console.log(event.jsEvaluationValue);
}
render() {
let sourceObj = {
uri: 'https://testwebview.free.beeceptor.com/post',
method: 'POST'
};
return (
<WebView
source={sourceObj}
style={{ marginTop: 20 }}
onLoadProgress={e => console.log(e.nativeEvent.progress)}
ref={node => { this.webView = node; }}
injectedJavaScript={
isLogin
}
mixedContentMode={'compatibility'}
onNavigationStateChange={this._onNavigationStateChange}
/>
);
}
}
В эмуляторе ios
_onNavigationStateChange = (event) => {
console.log('-- _onNavigationStateChange --');
console.log(event.jsEvaluationValue);
}
event.jsEvaluationValue будет равен 1, поскольку он найден«выходной» текст в h1