2

mWebView.addJavascriptInterface(this, XXX)用来让java输入代码herescript在webview上执行。

当我正在浏览的网页发送重定向时,问题就出现了。我能够捕获它并在同一个 web 视图中显示新的 URL,但 javascript 将不起作用。

我发现的唯一解决方案是创建一个新意图,在新活动上加载新页面。

public class QBrowser extends Activity {

@Override
public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.qbrowser_main);
    mWebView = (WebView) findViewById(R.id.webview);

    webSettings.setJavaScriptEnabled(true);

    mWebView.setWebChromeClient(new MyWebChromeClient());

    mWebView.setWebViewClient(new WebViewClient() {   
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
                    // BEGIN: THE WORK AROUND I DONT LIKE
            Intent intent = new Intent("com.bcnquark.client.qbrowser.QBROWSER");
            intent.putExtra("URL", url);
            startActivity(intent);
            finish();
            // END:THE WORK AROUND I DONT LIKE
            return true;
        }});


    Intent intent = getIntent();
    String url = intent.getStringExtra("URL");
        mWebView.addJavascriptInterface(this, "XXXX");
    }

    mWebView.loadUrl(url);
}
}
4

0 回答 0