将 HTML 文件中的外部 javascript 文件从 android assets 文件夹加载到 WebView
Posted
技术标签:
【中文标题】将 HTML 文件中的外部 javascript 文件从 android assets 文件夹加载到 WebView【英文标题】:Load external javascript file inside HTML file from android assets folder into WebView 【发布时间】:2019-04-24 04:03:02 【问题描述】:我正在尝试将外部 javascript 文件加载到 html 文件中。两者都放在 assets 文件夹中。
这是我的htmlTest.html
文件:
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js">
<script src="test.js"></script>
</head>
<body>
<script type="text/javascript">
func();
</script>
</body>
这是我的 test.js 文件:
function func()
$(document).ready(function ()
$('#EDIFICI').children().click(function ()
alert($(this).attr('id'));
);
);
这两个文件都位于 assets 文件夹的根目录中。 我像这样将 htmlTest.html 加载到我的 WebView 中:
wv.loadUrl("file:///android_asset/htmlTest.html");
如果我将 JavaScript 代码直接内联到 HTML 页面中,它可以工作,但当我链接外部 JavaScript 文件时,它就不行了。
【问题讨论】:
【参考方案1】:1.on onCreate
添加getSettings().setJavaScriptEnabled(true)
2.像这样改变.js
<head>
<script type="text/javascript" src="test.js"></script>
</head>
【讨论】:
【参考方案2】:这对我有用:
<head>
<script type="text/javascript" src="file:///android_asset/xxxxx.js"></script>
</head>
而 xxxxx.js 在 assets 文件夹中。
在代码中
WebView.enableSlowWholeDocumentDraw();
oWebView.clearCache(true);
oWebView.setPadding(0, 0, 0, 0);
oWebView.setInitialScale(1);
oWebView.getSettings().setUseWideViewPort(true);
oWebView.getSettings().setLoadWithOverviewMode(true);
oWebView.getSettings().setSupportZoom(true);
oWebView.getSettings().setBuiltInZoomControls(true);
oWebView.setScrollbarFadingEnabled(false);
oWebView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
oWebView.getSettings().setJavaScriptEnabled(true);
oWebView.setWebViewClient(new WebViewClient());
【讨论】:
【参考方案3】:试试这样的
webView.evaluateJavascript(yourFileAsString)
【讨论】:
没有帮助。 变量 yourFileAsString 包含有效的 javascript 或者您传递文件路径?【参考方案4】:尝试如下添加脚本
<html>
<head>
<script type="text/javascript" src="test.js"></script>
</head>
并将 test.js 文件添加到带有 html 的文件夹中
【讨论】:
【参考方案5】:我的 javascript 文件中有错误。它就像我在示例中所说的那样工作。很抱歉浪费了您的时间。
【讨论】:
以上是关于将 HTML 文件中的外部 javascript 文件从 android assets 文件夹加载到 WebView的主要内容,如果未能解决你的问题,请参考以下文章
如何将外部Javascript文件链接到Play Framework项目中的html文档?