我不能将这个简单的js代码注入(inject)react-native webview中。
I referred this link also but no solution provided here.
Then I found this one which works for html props but not uri.
import React, { Component } from 'react';
import { Platform,
StyleSheet,
Text,
View,
WebView
} from 'react-native';
export default class App extends Component<{}> {
injectjs(){
let jsCode = 'alert(hello)';
return jsCode;
}
render() {
return <WebView
javaScriptEnabled={true}
injectedJavaScript={this.injectjs()}
source={{uri:"https://www.google.com"}} style={{ marginTop: 20 }} />;
}
}
最佳答案
好吧,这里有多个问题。首先是您的Web View 需要用flex包裹在一个包含View的组件中:1.其次,injectedJavascript只接受一个字符串,而不是一个函数。第三,似乎您试图在未定义hello的情况下将其用作变量,或者如果它是字符串,则语法需要类似以下内容:injectedJavascript = {'alert(“hello”)'}。此外,当 View 加载时,injectedJavascript已被触发,因此如果您打算这样做,那么一切就很好了。虽然可以通过结合使用onLoadStart和injectJavascript这些 Prop 来在Web View 开始加载时注入(inject)javascript,但是实现方式却大不相同,因此这是一个不同的问题。试试下面的代码:
import React, { Component } from 'react';
import {
Platform,
StyleSheet,
Text,
View,
WebView
} from 'react-native';
export default class App extends Component {
render() {
let yourAlert = 'alert("hello")'
return (
<View style={{flex: 1}}>
<WebView
javaScriptEnabled={true}
domStorageEnabled={true}
injectedJavaScript={yourAlert}
source={{ uri: "https://www.google.com" }} style={{ marginTop: 20 }} />
</View>
)
}
}
关于javascript - injectionJavaScript在React Native的Webview中不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46690261/