将 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文档?

更改 JavaScript 中的外部变量

javascript引入外部js文件

将 JavaScript 放在 HTML 文件中的啥位置?

如何使用从 javascript/html 中的外部 php 文件中提取的 JSON 数据?

js文件如何引用外部js