gpt4 book ai didi

javascript - 在 React Native 中检测来自 WebView 的按钮点击

转载 作者:行者123 更新时间:2023-11-30 07:32:15 25 4
gpt4 key购买 nike

谁能帮助我了解如何在 React Native 中检测 Webview 按钮单击事件?如下面的代码所示,我的 WebView (index.html) 中有一个 Button,我想为其检测来自 React Native 的点击事件并执行 onClick 方法。我尝试了多种方法,但未能成功。非常感谢。

我的 MyApp.js

import React from 'react';
import { AppRegistry, View, WebView, StyleSheet} from 'react-native'

export default class MyApp extends React.Component {
onClick = () => {
console.log('Button Clicked');
}
render() {
return (
<View style={styles.container}>
<WebView
style={styles.webView}
source={require('./index.html')}/>
</View>
);
}
};

let styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#fff',
},
webView: {
backgroundColor: '#fff',
height: 350,
}
});

我的 index.html

<html>
<body>
<Button>Click Here</Button>
</body>
</html>

最佳答案

window.postMessage() 添加到您的页面文件并将 onMessage={this.onMessage} 添加到您的 React Native WebView 组件。

例子:

// index.html (Web)
...
<script>
window.postMessage("Sending data from WebView");
</script>
...


// MyWebView.js (React Native)
<WebView>
...
<WebView
ref="webview"
onMessage={this.onMessage}
/>

onMessage(data) {
//Prints out data that was passed.
console.log(data);
}

编辑:工作示例:

App.js

onMessage(m) {
alert(m.nativeEvent.data);
}
render() {
return(
<WebView
style={{ flex: 1 }}
source={{uri: 'http://127.0.0.1:8877'}} //my localhost
onMessage={m => this.onMessage(m)}
/>
);
}

index.html

<button>Send post message from web</button>

<script>
document.querySelector("button").onclick = function() {
console.log("Send post message");
window.postMessage("Hello React", "*");
}
</script>

希望对你有帮助

关于javascript - 在 React Native 中检测来自 WebView 的按钮点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47936566/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com