我正在尝试从外部 HTML 文件访问 assets/css 中的数据。
过程是这样的:
<html>
<head>
<meta name="viewport" content="target-densitydpi=device-dpi, width=device-width, height=device-height, user-scalable=yes" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>ola</title>
<link rel="stylesheet" type="text/css" href="file:///android_asset/css/main.css" />
<link rel="stylesheet" type="text/css" href="file:///android_asset/css/sch.css" />
<script type="text/javascript" src="file:///android_asset/css/ethan.js" />
<script type="text/javascript" src="scripts/allinone.js" />
</head>
<body>
<input id="btnTest1" name="button" type="button" style="height:0px;width:0px;" />
</body>
</html>
所以这里的问题是,我实际上是使用链接调用 HTML 文件(因为 HTML 文件不在本地)。但是 main.css
、sch.css
和 ethan.js
本地存在于 assets/css 文件夹中。
我想要做的是加载显然是外部的 allinone.js
并将其他三个文件加载到内部的文件中并运行脚本。
我找到了“file:///android_asset/css/main.css
”,但它似乎不起作用。
请帮忙....
最佳答案
我很想知道更多关于这里用例的信息。我的理解是这样的:
- 您正在将外部托管的 HTML 文件加载到 Android Webview 中
- 您需要覆盖一些本地样式/脚本,它们不能与 HTML 一起托管在外部站点上(大概是因为您是动态生成它们的)。
如果是这样——并且考虑到您设想的使用 file://URI 的逻辑方法不起作用——似乎有两个选项,每个选项都使用 webView API:
- 从远程源加载 HTML 文件,修改它,然后将其设置为 webView 的源。找到远程 HTML 的标记并在那里内联注入(inject)您的本地 JS/CSS。
- 使用“loadUrl”WebView 方法动态注入(inject)您的 CSS/Javascript(如果 #1 是一个选项,这似乎不必要地复杂)。例如:
mWebView.loadUrl("javascript:injectJavascript(js)");
其中参数“js”是您在 Android 代码中加载的一些内联 Javascript,而 injectJavascript
是远程 HTML 文件中实际将其插入 DOM 的方法。采用类似的方法插入您的 CSS ...
诚然,这些方法有点老套。理想情况下,您会使用 WebView 类的自定义方法,如“addCssToDom”或其他方法,但据我所知,没有此类方法可用。
关于android - 如何从外部网页访问本地数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5114633/