gpt4 book ai didi

android - 以编程方式更改 WebView 中的 HTML

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:21:58 25 4
gpt4 key购买 nike

我正在使用 将 html Assets 页面加载到 WebView 中

webMain.loadUrl("file:///android_asset/record.html");

效果很好,但在 html 中有许多地方我想使用来自应用程序的信息。例如,HTML 可能包含读取“[Custom]”的文本。有什么方法可以用从应用程序传递的信息替换该词?

最佳答案

这是一个已经被接受的老问题,但是我相信这个问题可以通过使用 javascript 以更优雅的方式解决。

将 html 文件保存在您的 Assets 文件夹中,并用具有唯一 ID 的 div 元素将要替换的文本包围起来。

<html>
<head> ... <head>
<body>
Static text
<div id="replace1">replace me</div>
<div id="replace2">replace me too</div>
More static text ...
</body>
</html>

现在创建一个 javascript 函数,它将用 id 替换 div 的 innerHtml:

    function replace(id, newContent)
{
document.getElementById(id).innerHTML = newContent;
}

这个函数最好直接放在html文件中,更新<head>部分看起来像这样:

<head>
...
<script type="text/javascript">
function replace(id, newContent)
{
document.getElementById(id).innerHTML = newContent;
}
</script>
</head>

现在我们需要从 WebView Android api 调用 javascript 函数:

WebView helpView = (WebView)findViewById(R.id.helpView);
helpView.getSettings().setJavaScriptEnabled(true);
helpView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
view.loadUrl("javascript:replace('replace1', 'new content 1')");
view.loadUrl("javascript:replace('replace2', 'new content 2')");
}
});
helpView.loadUrl("file:///android_asset/help.html");

使用它,您将避免将潜在的大数据读入内存并对其运行不必要的昂贵操作。

关于android - 以编程方式更改 WebView 中的 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8938119/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com