Android执行JavaScript的重定向webview
问题描述:
我打电话的主URL,如“https://foo.com/default?companyId=1929770&authorizationSource=FTP”, 当我加载主要URL时,我将被重定向到辅助URL,如“https://foo.com/default?companyId=1929770&authorizationSource=FTP_123456789”。辅助URL总是随机生成带有编号的FTP。我怎样才能执行JavaScript的辅助URL?Android执行JavaScript的重定向webview
public class ActivityWebViewPay extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String privatURL = "https://foo.com/default?companyId=1929770&authorizationSource=FTP&account=" + getIntent().getStringExtra(ACCOUNT_LS);
WebView urlWebView = new WebView(this);
setContentView(urlWebView);
urlWebView.getSettings().setJavaScriptEnabled(true);
urlWebView.getSettings().setDomStorageEnabled(true);
WebSettings settingsURL = urlWebView.getSettings();
settingsURL.setMinimumFontSize(18);
settingsURL.setBuiltInZoomControls(true);
settingsURL.setDisplayZoomControls(true);
settingsURL.setJavaScriptEnabled(true);
settingsURL.setDomStorageEnabled(true);
urlWebView.clearHistory();
urlWebView.clearCache(true);
urlWebView.loadUrl(privatURL);
urlWebView.setWebViewClient(new WebViewClient(){
@Override
public void onPageFinished(WebView view, String url) {
view.loadUrl("javascript:function a(){window.document.getElementsByClassName('property-info-wrap')[0].style.display='none';}; a()");
}
});
}
logcat的:
[INFO:CONSOLE(1)] "Uncaught TypeError: Cannot read property 'style' of undefined", source: (1)
[INFO:CONSOLE(1)] "Uncaught TypeError: Cannot read property 'style' of undefined", source: (1)
[INFO:CONSOLE(22)] "Start Referrer is >>> ", source: link without FTP (22)
[INFO:CONSOLE(1)] "Uncaught TypeError: Cannot read property 'style' of undefined", source: (1)
[INFO:CONSOLE(5)] "The key "target-densitydpi" is not supported.", source: link with FTP (5)
[INFO:CONSOLE(30)] "referer ", source: link with FTP (30)
[INFO:CONSOLE(1)] "Uncaught TypeError: Cannot read property 'style' of undefined", source: (1)
答
可以执行像这里面的js代码onPageFinished
String jsScript = "javascript:alert(" + msg + ");";
webView.loadUrl(jsScript);
而且,对我来说:我加入一个开关就知道数量我打开的网址:
public void onPageFinished(WebView view, String url)
{
super.onPageFinished(view, url);
count++;
switch (count)
{
case 1:
String jsScriptInit;// do that you want
webView.loadUrl(jsScriptInit);
break;
case 2:
String jsScript;
webView.loadUrl(jsScript);
break;
}
}
您的解决方案不起作用 – mario
它对我来说工作正常。尝试添加一些日志。在onPageFinished()和我希望你会有成功 –