我正在使用webview
处理Android项目。一切正常但我无法将文本设置为textarea。我有一堆页面有备忘录写选项。我正在使用jQuery将备忘录的代码加载到页面中:
$('#memoContainer').load("memo.html");
memo.html textarea:
<div class="sisalto">
<textarea id="memo" style="width: 100%"> </textarea>
</div>
textarea工作,我可以在其中写,我可以获取内容并使用jQuery将其保存在Android中:
function save(){
var newContent = $('#memo').val();
AndroidFunction.saveFile(newContent);
}
我正在尝试获取已保存的内容并将其设置在textarea中:
var setMemo = $('#memo');
setMemo.innerText("DOESNT WORK");
setMemo.val('NOPE');
我已经尝试谷歌搜索和浏览这里几个小时,但似乎找不到任何有用的东西。许多人建议.val('smth');
选项,但它不起作用。
在尝试设置内容之前已加载备忘录,在我看来一切正常。这里有什么问题以及如何完成这项工作的想法?
答案 0 :(得分:0)
你应该使用'完整'函数回调
$('#memoContainer').load('memo.html', function() {
var setMemo = $('#memo');
setMemo.val('hello');
});
您是否使用WebView启用javascript?你需要这个来启用javascript:
WebView webView = ...
webView.getSettings().setJavaScriptEnabled(true);
确保jQuery已正确加载,您可以发布代码吗?
这是一个工作示例(因为它使用CDN加载jquery需要互联网权限):
import android.os.Bundle;
import android.app.Activity;
import android.webkit.WebView;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String html = "<html>\n" +
"<body>\n" +
"<textarea id=\"area\"></textarea>\n" +
"\n" +
"<script src=\"http://code.jquery.com/jquery-1.10.0.min.js\"></script>\n" +
"<script src=\"http://code.jquery.com/jquery-migrate-1.2.1.min.js\"></script>\n" +
"\n" +
"<script type=\"text/javascript\">\n" +
" $(document).ready(function() {\n" +
" var area = $('#area');\n" +
" area.val('Hello');\n" +
" });\n" +
"</script>\n" +
"\n" +
"</body>\n" +
"</html>";
String mime = "text/html";
String encoding = "utf-8";
setContentView(R.layout.activity_main);
WebView web = (WebView) this.findViewById(R.id.web);
web.getSettings().setJavaScriptEnabled(true);
web.loadDataWithBaseURL(null, html, mime, encoding, null);
}
}
答案 1 :(得分:0)
好的,问题是负载功能。它加载memo.html并在页面上显示它,但实际代码不会注入页面。因此我无法将文本设置为textarea,因为它实际上并不存在。