在加载Android WebView的html之前注入JavaScript
Inject JavaScript before html loaded with Android WebView
我正在使用Android WebView加载一个简单的HTML页面。HTML依赖于一小段Javascript代码。
我需要在html加载之前注入Javascript。所以我这样做:
public class MainActivity extends Activity {
WebView mWebView;
Button mButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mWebView = (WebView)findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.setWebChromeClient(new WebChromeClient(){
@Override
public boolean onJsAlert(WebView view, String url, String message,JsResult result) {
return super.onJsAlert(view, url, message, result);
}
});
mButton = (Button)findViewById(R.id.button);
mButton.setOnClickListener(new myListener());
}
class myListener implements OnClickListener{
int mCount = 1;
@Override
public void onClick(View arg0) {
System.out.println("Load test page=>"+mCount+" times");
mWebView.loadUrl("javascript:var output='This string is defined before html loaded.'");
mWebView.loadUrl("file:///android_asset/test.html");
mCount++;
}
}
}
HTML代码:<html>
<head>
<script>
alert(output);
</script>
<head>
<body>
</body>
</html>
当我第一次点击按钮时,JS和HTML工作正常。但是当我点击按钮再次执行加载时,它失败了。
日志:
Load test page=>1 times
Load test page=>2 times
Uncaught ReferenceError: output is not defined at file:///android_asset/test.html:5
Load test page=>3 times
Uncaught ReferenceError: output is not defined at file:///android_asset/test.html:5
任何建议吗?
这可能看起来像一个冗长的方法,但是你可以让你的android代码写js代码到一个文件,然后在你的html文件中引用该文件吗?
相关文章:
- 注入Javascript以选择具有指定值的所有单选按钮
- 在表单上注入javascript以发送post请求
- 动态注入javascript文件-为什么大多数示例都附加到头上
- 从 Meteor 模板注入 JavaScript
- 注入javascript代码的正确方式
- Html注入javascript代码
- 如何在不使用脚本标记的情况下注入javascript
- 使用C#在BHO中注入javascript-如何正确地转义字符串
- 我们如何将PHP变量注入Javascript
- document.write 注入 javascript 的计时
- 通过浏览器扩展注入 JavaScript
- 在 WebView 完成从以前的 JavaScript 注入加载后,在 Android 中注入 JavaScript
- 在服务器上注入 JavaScript 代码
- 将 PHP 数据注入 JavaScript 代码
- 样式注入Javascript事件
- 从c#中的代码后面向链接按钮注入JavaScript
- 在匿名函数中注入JavaScript变量作为值
- 从Chrome扩展在页面中注入Javascript:并发问题
- asp.net我可以将配置设置注入javascript吗
- WebBrowser注入Javascript将焦点设置为第一个输入框