如何在WebView中检测点击的单词?

时间:2018-10-10 11:14:34

标签: react-native

我有一个简单的WebView,想知道其中的哪个单词被点击了。例如,如果用户点击图片上文章中的任何单词,例如“气球”,我想捕获它。

这是代码和渲染。

export default class App extends React.Component {
  render() {
    return (
      <View style={{top:100, height: 500, backgroundColor:'red' }}>
        <WebView
          source={{uri: 'https://www.reuters.com/article/us-art-banksy/we-just-got-banksy-ed-balloon-girl-painting-self-destructs-at-sale-idUSKCN1MG0B4?feedType=RSS&feedName=artsNews'}}
          style={{height:"200", marginTop: 20}}
        />
      </View>

    );
  }
}

enter image description here

更新: 这就是我使WebView基于@pritesh答案传递回JS事件的方式。

<WebView
          source={{uri: 'https://www.reuters.com/article/us-art-banksy/we-just-got-banksy-ed-balloon-girl-painting-self-destructs-at-sale-idUSKCN1MG0B4?feedType=RSS&feedName=artsNews'}}
          style={{height:"200", marginTop: 20}}
          javaScriptEnabled={true}
          injectedJavaScript={`document.body.addEventListener('click', 
        function(e){
          window.postMessage("Message from WebView","*");
          console.log(e);
        })`}
          onMessage={e => console.log("message", e)}
        />

1 个答案:

答案 0 :(得分:1)

在我的头顶上,您可以尝试的一种方法是使用WebView的injectJavascriptinjectedJavascript道具。因此,您可以在身体上注册某种侦听器,并使用它来检测什么被按下,例如:

<WebView
    ref={c => this._webview = c}
    javaScriptEnabled={true}
    injectedJavaScript={`document.body.addEventListener('click', function(e){
        console.log(e)
    })`}
/>

但是您要检查一下如何将回调从Webview传递到React。