在 NativeScript 应用程序中加载本地 HTML/JavaScript/CSS

Posted

技术标签:

【中文标题】在 NativeScript 应用程序中加载本地 HTML/JavaScript/CSS【英文标题】:Load Local HTML/JavaScript/CSS Inside NativeScript App 【发布时间】:2019-05-12 23:00:50 【问题描述】:

对于使用 Angular 的 NativeScript iosandroid 应用程序,我如何在 WebView 中加载具有 JS 和 CSS 引用的本地存储的 html 文件?我能够显示 WebView,但我收到找不到文件的错误,因为我不知道从我的组件指向哪里。

目前我在 src/assets 中有文件,其中有 index.html

在应用程序中是否有更合适的位置来存储这些文件?有没有比 WebView 更好的显示方式?如何将此文件引用为 WebView 的源?

我还需要知道如何引用应用下载的文件。 iOS 和 Android 在哪里存储从应用程序中下载的文件?如何从我的 WebView 中引用这些文件?

谢谢。

【问题讨论】:

使用绝对路径加载文件。 ***.com/questions/53309673/… 可能重复,请查看示例和链接的 Github 问题。 @Manoj 我如何知道资产中捆绑文件夹或下载文件的绝对路径是什么?我知道绝对路径是什么,但我似乎无法找出那条路径是什么。我正在使用模拟器...也感谢您的链接。这不是重复的,因为问题不是错误 - 我想知道捆绑和下载的文件夹的绝对路径是什么,以及如何将其作为 WebView 的 src。谢谢。 您拥有链接的 Playground 示例所需的一切,它在加载外部图像时进行了演示。我什至仔细检查了external JS files,它的工作方式相同。如果你在 app 中打包 HTML / JS / 图片,那么你所要做的就是使用 app 目录而不是 temp 目录。 @Manoj 谢谢。正是使用 'tns-core-modules/file-system' 让我能够找到正确的文件路径。感谢您的帮助! 很高兴,你想通了。添加与答案相同。 【参考方案1】:

在将本地 JS/CSS/Image 导入 WebView 时必须使用绝对路径。这是Playground sample。与给定的示例不同,如果您要加载与应用程序一起打包的文件,只需使用应用程序目录而不是正确的文件路径。

【讨论】:

【参考方案2】:

我使用的路径如下:

src='~/assets/player.iframe.html'

在我刚刚添加的webpack.config.js

new CopyWebpackPlugin([
                 from:  glob: "assets/**"  ,          <= Added this row
                 from:  glob: "fonts/**"  ,
                 from:  glob: "**/*.jpg"  ,
                ...

【讨论】:

另外,在tsconfig.json 中有一个"paths" 键。它描述了每个 ~ 映射到的内容。即在我的新项目中,它现在是 "~/*: "src/*",所以现在此类图像的路径(没有 webpack 更改)将是:~/app/assets/...,因为 ~ 是根。

以上是关于在 NativeScript 应用程序中加载本地 HTML/JavaScript/CSS的主要内容,如果未能解决你的问题,请参考以下文章

当页面在带有nativescript的android应用程序中加载时如何显示键盘?

WKWebView 无法在 HTML 中加载本地资源

在 UIwebview 中加载本地图像

在节点 js 中加载本地 jquery.js 文件

如何在 Javascript 中加载本地 JSON 文件

FontAwesome 无法在本地和电子应用程序中加载字体