You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Android环境变量传入WebView中loadUrl方法内的JavaScript代码

解决WebView中动态传入Android变量到JS的问题

问题原因

你拼接的JS代码里,myString作为字符串值没有被引号包裹,JS会把它识别为变量而非字符串常量,导致语法错误,所以代码无法生效。

修复方案

给myString加上单引号,确保JS解析时把它当作字符串处理:

view.loadUrl("javascript:" +
        "document.querySelectorAll('a').forEach(link => link.href = '" +
        myString + "')");

更安全的写法(避免注入风险)

如果myString包含引号、换行等特殊字符,直接拼接可能引发JS语法错误或注入风险,推荐使用WebView.evaluateJavascript()配合参数传递,这种方式更可靠:

// Android 4.4及以上版本支持
view.evaluateJavascript("(function(newHref) {" +
        "document.querySelectorAll('a').forEach(link => link.href = newHref);" +
        "})('" + myString + "')", null);

如果myString特殊字符较多,还可以用JSON格式封装参数,彻底规避拼接问题:

try {
    String jsonParams = new JSONObject().put("newHref", myString).toString();
    view.evaluateJavascript("(function(params) {" +
            "document.querySelectorAll('a').forEach(link => link.href = params.newHref);" +
            "})(" + jsonParams + ")", null);
} catch (JSONException e) {
    e.printStackTrace();
}

额外注意事项

  • 确保WebView已启用JavaScript:webView.getSettings().setJavaScriptEnabled(true);
  • evaluateJavascript()相比loadUrl(),不会触发页面刷新,还能通过回调获取JS执行的返回值
  • 若加载本地HTML,需确认相关权限与跨域设置是否配置正确

内容的提问来源于stack exchange,提问作者Murod Khodzhaev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 11:31:02