2011-03-25 3 views
0

Android 2.2 WebView에서 JavaScript 파일 (HTML 파일과 동일한 폴더에 있음)에 대한 링크가있는 로컬 HTML 파일을로드합니다.Android가 외부 로컬 javascript 파일을 WebView에로드합니다.

03-25 16:48:57.965: ERROR/Web Console(10865): SyntaxError: Parse error at file:///data/data/com.mydomain.myapp/test.js:91

오류의 줄 번호 오류 로그 파일의 마지막 라인과 경로는 다음과 같습니다 참조 된 자바 스크립트를 로컬 파일하지 않는 내가 로그 캣 로그에서이 오류가 발생하지만, 로컬 HTML 파일을 성공적으로로드 js 파일의 올바른 경로입니다. 물론 모든 것이 Chrome에서 예상대로 작동합니다. 다음은 HTML의 조각이

<html> 
<head> 
    <title>My Title</title> 
    <meta name = "viewport" content = "width = device-width"> 
    <meta name = "viewport" content = "initial-scale = 1.0"> 
    <script type="text/javascript" src="test.js"></script> 
    <script type="text/javascript"> 
     button_onclick = function() {}; 
    </script> 

답변

2

이 오류는 js 파일 패키지 방법 때문인 것으로 나타났습니다. 앱은 초기화시 SQLite 자산 데이터베이스에서 파일을 읽고 장치 로컬 파일 시스템에 읽은 파일을 씁니다. js 파일은 Firefox SQLite Manager를 사용하여 SQLite 데이터베이스에 텍스트로 저장됩니다. js 파일을 텍스트가 아닌 BLOB로 SQLite Manager에 저장하면 모든 것이 예상대로 작동하며 WebView는 장치 로컬 파일 시스템에서 js 파일을 성공적으로로드 할 수 있습니다. 이것은 html 파일에는 문제가되지 않지만 js 파일의 경우 파서는 파일의 끝에 뭔가를 찾고 있습니다. 찾지 못하면 js 파일을 무시합니다.

애셋 입력 스트림에 파일 문자의 끝이 포함되어 있지 않을 때 자바 출력 스트림을 사용하여 파일을 작성할 때 어떤 이유로 추가되지 않은 파일 문자의 끝 부분이 누락되었습니다.

+0

그럼 어떻게 실제로 해결 했습니까? webview에로드 된 HTML에서 외부 js 파일을 사용할 수 있었습니까? – interstar

0

내가 안드로이드 문서에서 WebView 참조를 통해 볼 것 파일입니다. 하여 문서에서 :

By default, a WebView provides no browser-like widgets, does not enable JavaScript and web page errors are ignored. If your goal is only to display some HTML as a part of your UI, this is probably fine; the user won't need to interact with the web page beyond reading it, and the web page won't need to interact with the user. If you actually want a full-blown web browser, then you probably want to invoke the Browser application with a URL Intent rather than show it with a WebView

당신은 그러나 setJavaScriptEnabled()를 통해 웹보기에 그것을 사용할 수 있습니다.

관련 문제