2012-08-22 85 views
1

我在Android中使用WebView。我使用loadDataWithBaseURL加載以下網址:未捕獲的ReferenceError:嘗試訪問Android時未定義函數webview

(這裏我用 「XXXX」 來代替我的實際網頁的網址出於安全原因)

wb.loadDataWithBaseURL( 「http://XXXX.html」,formattedHTML, 「text/html的」, 「UTF-8」,null);

formattedHTML的內容包含由我的服務類填充的實際html源代碼。

http://XXXX.html完整的源代碼如下:

<html> 
    <head> 

     <script language="javascript"> 
      function displayAlert() 
      { 
       alert("this is in function displayAlert()"); 
      } 
     </script> 
    </head> 
    <body onload="displayAlert();">dummy 
    </body> 
</html> 

而且我有一個按鈕。當它被點擊時,我想要執行javascript函數「displayAlert」:wb.loadUrl(「javascript:displayAlert()」);

我的問題:

  1. 我在logcat的視圖此錯誤消息滿足:未捕獲語法錯誤:在http://XXXX.html:1意外標識符。

我搜索了很多網頁,其中大部分都表示這是由JavaScript中不匹配的「{」和「}」造成的。但是我檢查了我的代碼,發現我的JavaScript代碼格式正確,正如您在上面看到的那樣。

  1. 當我點擊按鈕時,javascript無法執行。錯誤消息:E/Web控制檯(534):未捕獲的引用錯誤:displayAlert未在null處定義:1。

我已經通過啓動Javascript在網頁視圖:

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

爲什麼在執行JavaScript函數「http://XXXX.html」無法定位執行?

請您幫助我嗎?非常感謝!

+0

嘿傑裏,我編輯了我的答案。 Regards – Killrawr

回答

1

你的問題是在你type屬性的寫入方法,其text/javascript而不是javascript/text是非常重要的(在type的順序必須是完全正確的)

<script type="text/javascript"> 
     function displayAlert() 
     { 
      alert("this is in function displayAlert()"); 
     } 
    </script> 
4

使用本

webView.setWebViewClient(new WebViewClient() { 
       @Override 
       public void onPageFinished(WebView view, String url) 
       { 
        webView.loadUrl("javascript:(function() { " + 
          "alert('hello') " + 
          "})()"); 
       } 
      }); 
+0

你是最棒的!經過一天的挫折,我挽救了我。今天才知道這個概念......謝謝 – John

相關問題