【发布时间】:2018-09-17 14:51:39
【问题描述】:
所以我目前正在使用 InjectJavascript 来更改我的 webview 的 html 元素的值。我能够将这些值分配给我所在州的值。我将如何设置一些等于 document.getElementById('data').value 的状态变量?好像 ReactNative 和 javascript 代码不兼容。
我试过 if(document.getElementById('data').value.length > 0) { ${this.setState({data: document.getElementById('data').value})}},但它不工作
const jsCode= `
document.getElementById('username').value='${this.state.userName}';
document.getElementById('password').value='${this.state.userPassword}';
document.getElementById('logIn').click();
`
<WebView
style={styles.webView}
source={{uri: 'http://example.com'}}
javaScriptEnabled
injectedJavaScript={jsCode}
renderLoading={()=>{
return(
<ActivityIndicator style = {
{ position: 'absolute', left: 0, right: 0,
top: 0, bottom: 0, alignItems: 'center',
justifyContent: 'center'
}
}/>
)}
}>
</WebView>
【问题讨论】:
-
所以要明确一点,你想
setState基于视图中的一些值变化吗?如果是这样,这不会与特定的输入事件相关联吗?然后我们可以分配一些处理函数来实际执行setState? -
是的,所以基本上我正在创建一个用于登录网站的反应原生移动应用程序。我正在使用注入的javascript将文本输入数据放入webview的字段中。当 web 视图上出现 html 元素“无效”时,我试图从本质上切换到我的应用程序上的错误视图。
-
在jscode中,我尝试查看文档是否包含类名“无效”的元素,然后我应该设置状态,this.setstate({switchtoerrorview: true})
-
好的,什么会触发“无效”元素?你能挂钩一些事件逻辑(例如一些文本输入处理程序)来检查错误情况何时发生吗?然后通过这种方式,您可以从同一个处理程序触发
setState调用 -
邮箱和密码错误时触发无效元素。似乎我只能访问注入的 javascript 代码中的“document.getelementbyid”。但我不能同时使用反应组件和 javascript。就像我无法使用 console.log 打印出 document.getelementbyid 值一样,除非我使用模板文字,如 ${console.log},但是我无法访问文字内部的 document.getelementbyid。跨度>
标签: javascript react-native webview getelementbyid setstate