2010-08-06 62 views
2

的JavaScript我有一個非常基本的WebView其工作,直到我試圖在那裏停止處理JavaScript的添加自定義webViewClient。難道我做錯了什麼?有另一種方式來擺脫在WebView中的地址欄和菜單選項的?安卓的WebView不加載自定義WebViewClient

browser = (WebView) findViewById(R.id.webkit); 

    WebSettings webSettings = browser.getSettings(); 
    webSettings.setJavaScriptEnabled(true); 

    // uncommenting this line will remove address bar, but also stop JavaScript from loading 
    //browser.setWebViewClient(new InternalWebViewClient()); 

    // even uncommenting this line will stop JavaScript from loading 
    //browser.setWebViewClient(new WebViewClient()); 

    browser.setWebChromeClient(new InternalWebChromeClient()); 
    if (savedInstanceState != null) { 
     browser.restoreState(savedInstanceState); 
    } else { 
     browser.loadUrl("http://site.with.javascript"); 
    } 

回答

3

出於某種原因,而不是瀏覽器不同的WebKit的運行JS - 我結束了各地越來越通過迫使一些JS問題與以下行運行該頁面就裝好後:。

browser.loadUrl("javascript:document.getElementById('something').do.something()"); 
4

在我的應用我用下面並沒有地址欄,和JavaScript的工作(修改,以符合您的命名):

browser = (WebView) findViewById(R.id.webkit); 
browser.getSettings().setJavaScriptEnabled(true); 

browser.loadUrl("http://site.with.javascript"); 

我不setWebViewClientsetWebChromeClient和做任何事它的工作原理如上所述

我覺得你的代碼的問題是,你的默認(內部)WebViewClient和/或WebChromeClient啓用JavaScript,然後替換那些用新的,現在有新的屬性。

如果將setJavaScriptEnabled(true)呼叫來的新任務後(和之前的loadUrl我覺得你的代碼將工作

0

我被這樣的決定有助於在一個匿名函數包裹計算

"javascript:" + "(function(){ <YOUR CODE> })();"