2012-05-14 35 views
2

我有一個android項目,具有web視圖。此webview加載存儲在我的資產文件夾中的靜態html文件。另外在我的資產文件夾中是第三方JavaScript庫(rangy)。在我的html文件的頭部有腳本標記中有一些javascript。該javascript引用rangy庫中的方法和對象。我有我的html文件參考rangy通過腳本標記。當我嘗試使用函數和方法時,出現錯誤消息:Android WebView:使用腳本標籤從我的資產文件夾加載外部javascript文件

Cannot call method '[any method from rangy library]' of 
    undefined 

這裏是相關的代碼片段。

這是我包括瘦長:

<html lang="en"> 
<head> 
    <title> </title> 
    <meta charset="utf-8"> 
    <style type="text/css"> 
    </style> 
    <script type="text/javascript" src="rangy.js"></script> 
    <script type="text/javascript" src="rangy-serializer.js"></script> 
    <script type="text/javascript"> 

    //...My native js 

    </script> 
</head> 

這裏是瘦長庫的真正廣泛的行程。我只包括興田圖書館在這個崗位,我覺得是有關我的問題的部分:

window['rangy'] = (function() { 

//This is all the code for rangy 

}); 

這裏是我的家鄉JS的部分引用瘦長。在最後的catch塊輸出錯誤的HTML文檔的身體,由於Android的WebView不默認提供以下信息:

jsHandler.restoreSelection = function(selectionDetails) { 

     try{ 
      window.document.body.style.background="yellow"; 
      window.rangy.deserializeSelection(decodeURIComponent(selectionDetails.replace(/\s+$/, ""))); 
      window.document.body.style.background="green"; 
     } 
     catch(err){ 
      window.document.body.innerHTML = err.message; 
     } 
    }; 

我有我的應用程序的按鈕將火jsHandler.restoreSelection ()函數。當我按下該按鈕時,背景會從白色變爲黃色,但是隨後該命令會捕獲異常,並用我張貼的錯誤消息替換正文文本。我的應用程序設置有什麼問題?從資產文件夾中的html文件引用外部js文件的正確方法是什麼? (注意:我確實已經打開了javascript)。

謝謝先進!

回答

4

經過另一天的谷歌搜索後,我發現這個頁面,這是我的問題的解決方案:Rendering HTML in a WebView with custom CSS我使用loadDataWithBaseUrl傳遞數據到webview,但我傳遞baseurl爲null,因爲我不知道什麼用它做。相反,我會傳遞一個對我的項目的資產目錄的引用。

相關問題