我已将index.html文件存储在内部存储中,而html文件使用以下代码添加脚本以便在webview上显示:
<script type="text/javascript" src="http://url.net/4.2/something.js"></script>
工作正常但是当我尝试从内部存储而不是链接链接JS文件时,我在webview中什么都没得到。
<script type="text/javascript" src="something.js"></script>
以上不起作用。有人能告诉我如何链接内部存储中的文件?我也试过了/sdcard/something.js
,这也没用。
JS文件夹和index.html文件位于根目录中。
答案 0 :(得分:0)
js文件是否存储在相对于index.html的位置?你可以使用
@Override
public void onLoadResource(WebView view, String resUrl) {
super.onLoadResource(view, resUrl);
// LOG resURL
}
我发现使用另一个技巧shouldInterceptRequest自己加载js
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, String resUrl) {
if (resUrl.startsWith("somepattern")) {
// Figure out where the file is
// Load it into a stream
WebResourceResponse response = new WebResourceResponse("text/javascript", "utf-8", /*Input stream*/);
return response;
} catch (Exception e) {
return null;
}
}
return null;
}
答案 1 :(得分:0)
如果您将js文件存储到app内部存储空间,请使用此
<script type="text/javascript" src="file:///data/data/***com.yourproject.example***/files/js/tinymce/tinymce.min.js"></script>
并相应更改您的包名称。
最好的方法是动态创建脚本标记,而不是创建硬编码。这样你就可以在android api的帮助下找到绝对路径,然后将路径传递给javascript方法。 例如
mWebView.loadUrl("javascript:loadPage('" + Yourfile path +
"');");
和JS方法是
function loadPage(path){
var articleTextScript = document.createElement('script');
articleTextScript.type = 'text/javascript';
articleTextScript.src = path;
articleTextScript.id = 'articleTextScript';
var header = document.getElementsByTagName('head')[0];
header.appendChild(articleTextScript);
}