저는 48 시간 이상이 문제를 해결해 왔으며 인터넷상의 어느 곳에서나 답을 찾을 수 없었습니다.Android Webview HTML 로딩 자바 스크립트 문제
안드로이드 애플리케이션이 처음 실행될 때 콘텐츠를 다운로드하고 (콘텐츠가 20MB 이상) 사용자의 SD 카드에/mnt/sdcard/{my package}/폴더의 파일이 압축 해제됩니다. 콘텐츠에는 HTML 파일, CSS 파일, JS 파일 및 이미지가 포함됩니다. 여기에 SD 카드 (/ =/MNT/SDCARD/{내 패키지}/폴더 /)에 기록됩니다 무엇의 전체 구조입니다 :
/내용/
a.html
b.html
images/
image1.jpg
/CSS/
c.css
d.css
/JS/여기
e.js
f.js
는 SD 카드에서 HTML 파일을로드 내 코드입니다 :
webView = (WebView) findViewById(R.id.pageBrowser);
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(new LinkHandlerInterface(), "Android");
webView.setWebViewClient(new PageWebViewClient());
// contentLocation + url is equal to the full path to the html file
webView.loadUrl("file://" + contentLocation + url);
이 코드는 HTML 페이지를로드합니다. 문제는 아직 없습니다. 각 페이지에는 다음과 같은 헤드 태그가 있습니다.
<link rel="stylesheet" type="text/css" href="../css/screen.css" media="all" />
<link rel="stylesheet" type="text/css" href="../css/inPractice.css" media="all" />
<link rel="stylesheet" type="text/css" href="../css/inPracticeScheme.css" media="all" />
<link rel="stylesheet" type="text/css" href="../css/mobile/iPad.css" media="all" />
<script type="text/javascript" src="../js/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="../js/inPractice-utilities.js"></script>
<script type="text/javascript" src="../js/inPractice.js"></script>
<script type="text/javascript" src="../js/mobile/inpractice.ipad.js"></script>
여기에 문제가 있습니다. 내 WebView는 HTML을 잘 렌더링합니다. 그것은 심지어 CSS를 완벽하게로드하고 적용합니다. 그러나 Javascript를로드하고 실행하는 것을 거부합니다. 위의 내용을 기억하면 js 폴더는 실제로 html 파일에서 하나의 파일로 표시되므로 정확한 위치를 가리키고 있습니다.
는 여기에 내가 알고있는 목록입니다 :
내가 사용하고있어 CSS 잘 적용되고, 그래서이 문제는 파일 위치하지 알고있다.
이전에이 코드를 사용했지만 응용 프로그램의 assets 폴더 (file : /// android_assets/...)에서 파일을로드하는 중이었고 완벽하게 작동했습니다. 내용이 너무 커서 응용 프로그램과 함께 사용할 수 없으므로 SD 카드로 옮길 수 없습니다.
모든 자바 스크립트 메서드가 스크립트 태그 안에 나열되는 방식으로 HTML 파일을 변경하면 잘 동작합니다. HTML에 대한 제어권이 없으므로이 변경 사항을 영구적으로 적용 할 수 없습니다. 이것은 WebView가 Javascript를 실행하는 데 아무런 문제가 없다는 것을 말해줍니다.
이미지가 잘로드됩니다.
나는 신선한 아이디어가되었습니다. 누구든지 내 WebView 내 자바 스크립트 파일을로드 할 수없는 어떤 단서가 있습니까? 이걸 본 사람 있어요?
편집 : 여기에 내가 여기에 볼 수 있습니다 사용하려고 해요 JS 파일은 다음과 같습니다
http://www.automatastudios.com/clients/cco/inpractice/css/inPractice.css http://www.automatastudios.com/clients/cco/inpractice/css/inPracticeScheme.css http://www.automatastudios.com/clients/cco/inpractice/css/screen.css http://www.automatastudios.com/clients/cco/inpractice/css/mobile/iPad.css
- 참고 :이 CSS 파일은 나에 의해 작성되지 않았다.
이 궁극적으로 문제가 어디에있을 수 있습니다 궁금 안드로이드는 SD 카드의 JS가 WebView 내에서 실행되는 것을 허용하지 않을 것입니까? – Keenan