我搜索了很多,但无法找到任何解决方案。我基本上是在 webview 中制作一个 epub 阅读器,它具有一些功能,如突出显示文本等。我为此制作了一些 javascript 文件。但是要在 html 页面中添加 js 文件,我需要在 html 文件中定义它,例如:
<script src='file:///android_asset/jquery.js'></script>
但由于 html 可以是任何文件,我必须使用其他方法加载文件。我尝试使用
view.loadUrl("javascript:loadScript('file:///android_asset/jquery.js','callback')");
但它没有加载我的 js(我调用了它的一些函数,但它们没有起作用)。
我也试过this解决方案,但没有奏效。基本上,我只需要在 webview 上加载我的 js 文件,以便我以后可以使用它的功能。这听起来像是一项简单的任务,但我无法为此找到任何解决方案。有什么想法吗?
最佳答案
您将要使用 loadDataWithBaseURL为了您的目的。
更新:
我没有在任何地方看到加载到页面中的实际方法 loadScript(),因此您可以在调用 javascript:loadScript() 之前尝试自己创建 loadScript 方法。
view.loadUrl("javascript:function loadScript(url, callback)" +
"{" +
" var head = document.getElementsByTagName('head')[0];" +
" var script = document.createElement('script');" +
" script.type = 'text/javascript';" +
" script.src = url;" +
" script.onreadystatechange = callback;" +
" script.onload = callback;" +
" head.appendChild(script);" +
"}");
view.loadUrl("javascript:loadScript('file:///android_asset/jquery.js','callback')");
关于javascript - 加载html后将js文件从assets加载到webview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28099546/