안 드 로 이 드 호출 JS 가 실 패 했 을 때 가능 한 이유
3092 단어 안 드 로 이 드 조정 JS
String msg = "message";
webView.loadUrl("javascript:showInfoFromJava(" + msg + ")");
하지만 기능 이 실 현 됐 을 때 실패했다.웹 신문 이 오류: 웹 console uncaught referenceerror: message is not defined at null: 1 은 웹 이 message 를 변수 값 이 아니 라 변수 이름 이 라 고 생각 한 다 는 뜻 입 니 다.찾 아 보 니 JS 가 String 변 수 를 정의 할 때 작은 따옴표 를 사용 하고 JAVA 는 작은 따옴표 를 사용 합 니 다.그래서 코드 를
String msg = "message";
webView.loadUrl("javascript:showInfoFromJava('" + msg + "')");
따옴표 추 가 를 통 해 JS 는 message 가 변수 이름 이 아니 라 변수 값 이라는 것 을 알 수 있 습 니 다.인자 가 포 함 된 JS 방법 을 호출 할 때 이 문제 가 발생 하기 쉽다.인자 가 없 는 JS 방법 이 라면 직접 쓰 면 된다.예 를 들 어 쇼 인 포 프 롬 자바 () 방법 을 직접 호출 했다.
webView.loadUrl("javascript:showInfoFromJava()");
안 드 로 이 드 호출 JS 방법 은 두 프로 그래 밍 방법 에서 변수 가 다 르 게 나타 나 는 것 을 주의 하 십시오.
그리고 다른 4 가지 경우 JS 호출 에 실패 할 수도 있 습 니 다. 다음 과 같이 요약 합 니 다. 1. webView. getSettings (). setJavaScriptEnable (true);webView 지원 JavaScript 2. webView 를 설정 합 니 다. addJavascriptInterface (new JScallBack (), "JScallBack");자바 대상 웹 뷰 를 연결 하 는 것 은 자바 대상 을 웹 JS 와 연결 하 는 것 입 니 다.3. JScallBack 클래스 에 @ JavascriptInterface 주 해 를 추가 하고 android. webkit. JavascriptInterface 를 가 져 옵 니 다.4. ManiFeast 를 검사 하고 android: targetSdkVersion 을 17 및 1 로 변경 합 니 다.
Html 코드 첨부:
<html>
<body>
<script type="text/javascript">
var a = document.documentElement.clientHeight;
document.getElementById("id").style.height = a+"px";
script>
<script>
function showInfoFromJava(msg){
alert(msg);
}
script>
body>
html>