gpt4 book ai didi

javascript - 将 javascript 注入(inject) WebChromeClient

转载 作者:太空狗 更新时间:2023-10-29 12:44:55 27 4
gpt4 key购买 nike

我知道,您可以将 javascript 注入(inject) Android WebView。我已经这样做了。但是,我加载了一个 html5/javascript 网络应用程序(不是我自己的,所以我无权访问代码)并且我需要注入(inject)额外的 javascript。但是这个 web 应用程序在标准 WebView 中不能正常工作。原因大概是:

"By default, a WebView provides no browser-like widgets, does not enable JavaScript and web page errors are ignored."
http://developer.android.com/reference/android/webkit/WebView.html

所以,我启用了 Javascript,但这可能是因为它忽略了网页错误。然而,在普通的 Chrome 浏览器中,一切正常,没有任何问题。

虽然我已经启用了很多东西,但 webview 不起作用:

webView = (WebView) findViewById( R.id.webView );
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setPluginState(PluginState.ON);
webView.getSettings().setDomStorageEnabled(true);
webView.setBackgroundColor(0x00000000);
webView.setWebChromeClient( new WebChromeClient() );
webView.setWebViewClient( new WebViewListener() );
CookieManager.getInstance().setAcceptCookie(true);

那么,是否有可能将 javascript 注入(inject)到普通的 WebChromeClient 中?或者您有任何其他猜测我还可以启用或注入(inject)到 WebView 中吗?

最佳答案

首先,您需要使用派生自 WebViewClient 的类来设置 WebViewClient:

WebView webview = new WebView();
webview.setWebViewClient(new WebClient());
webview.loadUrl("stackoverflow.com");

然后在 WebClient 中,等待页面加载 (onPageFinished)。然后你 loadUrl("javascript:[你的 javascript 在这里]").

public class WebClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}

@Override
public void onPageFinished(WebView view, String url)
{
// Obvious next step is: document.forms[0].submit()
view.loadUrl("javascript:document.forms[0].q.value='[android]'");
}
}

关于javascript - 将 javascript 注入(inject) WebChromeClient,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19669659/

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