gpt4 book ai didi

javascript - 在 WebView 中捕获某些 Javascript 函数调用

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:40:32 26 4
gpt4 key购买 nike

我正在编写一个基本的 Web 浏览器,它只能访问某个网站(由另一家公司开发和维护)来完成我的工作,但是为了计算登录和在该网站上花费的时间(两个非常对我公司很重要)您需要使用网站上的某个按钮注销。我查看了页面源代码,该按钮所做的只是调用一个 javascript 函数(名称类似于 doLogoff() 或类似名称),该函数在普通浏览器上只会关闭您登录后创建的窗口。在我的应用程序中,一切都在一个窗口中完成,没有选项卡(不需要它们)而且我不完全确定关闭窗口的调用对我的应用程序做了什么,但 WebView 上的站点只是保持打开状态该页面,只有在您单击链接时才会返回到登录页面。

有没有办法检测某个 JavaScript 函数何时在 WebView 中被调用?如果我可以绑定(bind)该函数并确保确实执行了注销,那么我就可以让 webview 自己转到登录页面。

最佳答案

您可以使用 JavascriptInterface 来做到这一点。以下示例来自 documentation .它以相反的方式工作。您可以在 javascript 中创建一个函数,该函数将在您的 Activity 中触发 java 代码。

您在 java 代码中声明您的接口(interface)。

public class JavaScriptInterface {
Context mContext;

/** Instantiate the interface and set the context */
JavaScriptInterface(Context c) {
mContext = c;
}

/** Show a toast from the web page */
@JavascriptInterface
public void showToast(String toast) {
Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
}
}

您将界面添加到您的 WebView

WebView webView = (WebView) findViewById(R.id.webview);
webView.addJavascriptInterface(new JavaScriptInterface(this), "Android");

并且在您的网页中,您可以从脚本中调用 java 方法

<script type="text/javascript">
function showAndroidToast(toast) {
Android.showToast(toast);
}
</script>

关于javascript - 在 WebView 中捕获某些 Javascript 函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12010669/

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