我不能将这个简单的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/

10-11 01:04