2012-05-14 6 views
2

webview 기능이있는 Android 프로젝트가 있습니다. 이 webview는 내 자산 폴더에 저장된 정적 html 파일을로드합니다. 또한 내 자산 폴더에 제 3 자 자바 스크립트 라이브러리 (렁)입니다. 거기에 내 HTML 파일의 머리에 스크립트 태그에 몇 가지 자바 스크립트가 있습니다. 그 자바 스크립트는 메서드와 객체를 참조하십시오. 내 html 파일 참조 스크립트 태그를 통해 rangy. 함수 및 메서드를 사용하려고하면 읽는 오류가 발생합니다.Android WebView : 스크립트 태그를 사용하여 내 자산 폴더에서 외부 자바 스크립트 파일로드

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> 

가 여기에 배회하는 라이브러리의 정말 넓은 스트로크입니다 : 내가 돌아 다니기에 알맞은 (가) 있습니다

이입니다. 난 단지 내가 내 질문에 관련이있는 느낌이 게시물에 HTE 라이브러리의 일부를 포함하고 있습니다 :

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

//This is all the code for rangy 

}); 

여기 배회 참조 내 기본 JS의 일부입니다.

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을 발사합니다 내 응용 프로그램에서 버튼이 : 안드로이드 웹보기는 기본적으로이 정보를 제공하지 않기 때문에 끝의 catch 블록은 HTML 문서의 본문에 오류를 인쇄() 함수를 호출합니다. 이 버튼을 누르면 배경이 흰색에서 노란색으로 바뀌지 만 예외가 잡히고 본문 텍스트가 맨 위에 올린 오류 메시지로 바뀝니다. 내 앱의 설정에 어떤 문제가 있습니까? 내 자산 폴더에있는 html 파일에서 외부 js 파일을 참조하는 올바른 방법은 무엇입니까? (참고 : 나는 자바 스크립트가 켜져있다).

고맙습니다.

답변

4

내 문제의 해결책이었던이 페이지를 찾았습니다. Rendering HTML in a WebView with custom CSS loadDataWithBaseUrl을 사용하여 webview에 데이터를 전달했지만, 나는 무엇을 모르기 때문에 null로 baseurl을 전달했습니다. 그것으로해라. 대신에 내 프로젝트의 assets 디렉토리에 대한 참조를 전달하려고합니다.