我正在开发一个应用程序。我在其中将文本附加到存储在.html文件中的现有文本,.html文件的位置在我的应用程序的“assets”文件夹中。我知道如何使用URL加载html但我的问题是附加文本。 以下是我的java代码
public class LoadWeb extends Activity {
WebView wv;
private Handler handler = null;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
wv=(WebView)findViewById(R.id.webView1);
handler = new Handler();
wv.getSettings().setJavaScriptEnabled(true);
wv.getSettings().setBuiltInZoomControls(true);
wv.addJavascriptInterface(this, "contactSupport");
wv.getSettings().setSupportZoom(true);
wv.setWebViewClient(new Callback());
// String title=wv.getTitle();
// Log.e("nitin", "msg"+title);
setTheme(Color.CYAN);
// wv.setInitialScale(100);
wv.loadUrl("file:///android_asset/style.html");
}
void loadTime() {
String TESTSTRING = "'<div style='color:blue; border:1px solid red;'>YO!</div>'";
// TODO Auto-generated method stub
Log.e("mitiiiiiii", ""+TESTSTRING);
wv.loadUrl("javascript:appendText("+TESTSTRING+")");
}
private class Callback extends WebViewClient {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return(true);
}
@Override
public void onPageFinished(WebView view, String url) {
loadTime();
super.onPageFinished(view, url);
}
}
public String deleteContact(final String contactId){
Toast.makeText(getBaseContext(),contactId ,Toast.LENGTH_LONG).show();
handler.post(new Runnable() {
public void run() {
Toast.makeText(getBaseContext(),contactId ,Toast.LENGTH_LONG).show();
}
});
Log.i("nitin" ,""+contactId);
return "http://google.com";
}
}
以下是我的javascript代码
<html>
<head>
<script type="text/javascript">
var extraStr;
function appendText(extraStr) {
document.getElementById('question')[0].innerHTML = document.getElementById('question')[0].innerHTML + extraStr;
contactSupport.deleteContact();
}
function getUsed()
{
var total = "";
$(".boxWord.boxWordUsed").each(function (i){ total = total + this.getAttribute('index_no') + ":"; });
return total;
}
</script>
<link href="style.css" media="all" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="question" class='question' >
</div>
任何人都可以告诉我它为什么不起作用
提前致谢。
答案 0 :(得分:7)
附加到HTML(连接)作为字符串连接不是一个好的解决方案,但您可以尝试这种方法,这将确保html文档的神圣性不被破坏。由于您随身携带HTML文档,因此表示您可以控制该文档,因此您应该能够执行此操作,我将在下面提及。
1)在HTML中创建一个函数
function appendText(extraStr) {
document.getElementsByTagName('body')[0].innerHTML = document.getElementsByTagName('body')[0].innerHTML + extraStr;
}
2)在WebView上加载调用此函数
myWebView.loadUrl("javascript:appendText('extra text or html here')");
3)不要忘记添加此
myWebView.getSettings().setJavaScriptEnabled(true);