我正在尝试在由 native WebView加载的网页中设置全局变量。我正在尝试使用injectJavascript Prop 设置全局变量,但是我收到一条错误消息,告诉我injectJavascript应该是一个函数。

如何格式化injectJavaScript函数以将消息作为全局变量传递到加载的网页上?谢谢你。

class Browser extends React.Component {

  render() {
    const { url } = this.props;
    return (
      <View>
        <WebView
          source={{ uri: url }}
          injectJavaScript={
            "window.testMessage = 'hello world'"
          }
        />
      </View>
    );
  }
}

最佳答案

请尝试以下方法:

<WebView
    ref={c => this._webview = c}
    javaScriptEnabled={true}
    injectedJavaScript={`window.testMessage = "hello world"`}
/>
injectedJavaScript在加载时将 JS注入(inject)到Web View 中的 Prop ,即注入(inject)。这就是您似乎想要的。

另一方面,如何使用injectJavascript?这是通过在webview的ref上调用它来以编程方式即时注入(inject)更多JS。
在这种情况下,它可能看起来像这样:
this.webview.injectJavascript(`window.reactComponent.forceUpdate();true;`)

09-29 22:37