【发布时间】:2011-08-04 16:21:14
【问题描述】:
我已经看到这个问题被问了很多次,但仍然无法让我的代码正常工作。
我希望我的 webview 加载一些 URL(比如 www.google.com),然后应用一些存储在 assets/jstest.js 中的 javascript,其中包含以下内容:
function test(){
document.bgColor="#00FF00"; //turns to green the background color
}
这是我尝试加载 JS 的地方:
@Override
public void onPageFinished(WebView view, String url){
view.loadUrl("javascript:(function() { "
+ " document.bgColor='#FF0000';" //turns to red the background color
+ " var script=document.createElement('script'); "
+ " script.setAttribute('type','text/javascript'); "
+ " script.setAttribute('src', 'file:///android_asset/jstest.js'); "
+ " script.onload = function(){ "
+ " test(); "
+ " }; "
+ " document.getElementsByTagName('head')[0].appendChild(script); "
+ "})()");
}
我知道这里的 javascript 可以正常工作,因为背景颜色实际上变成了红色,但由于某种原因它不会加载 jstest.js。我认为问题可能出在文件路径中(我确定 javascript 代码的每一行都是正确的),但对我来说它看起来是正确的。该文件位于正确的文件夹中。
我错过了什么?
编辑:
由于WebResourceResponse 类仅适用于 API 级别 11,因此这是我最终得出的结论。
public void onPageFinished(WebView view, String url){
String jscontent = "";
try{
InputStream is = am.open("jstest.js"); //am = Activity.getAssets()
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;
while (( line = br.readLine()) != null) {
jscontent += line;
}
is.close();
}
catch(Exception e){}
view.loadUrl("javascript:(" + jscontent + ")()");
}
jstest.js 仅包含:
function() {
document.bgColor="#00FF00";
}
【问题讨论】:
标签: javascript android webview android-webview