2011-09-24 2 views
4

Android WebView가 있습니다. 나는 그것을 (String으로) 전달한다. 이 HTML에는 기본 자바 스크립트가 포함되어 있습니다.Android 사용자 정의 WebView가로드 된 HTML에 정의 된 javascript 함수를 찾지 못했습니다.

로드시 HTML은 자바 스크립트 함수 (<head></head>에 정의 됨)를 호출하려고 시도합니다. 이 브라우저 바탕 화면에서 잘 작동하므로 HTML/Javascript 자체는 괜찮지 만 동일한 HTML을 WebView에로드하면 작동하지 않습니다.

WebView view = new WebView(context); 
WebSettings settings = view.getSettings(); 
settings.setJavaScriptEnabled(true); 
settings.setJavaScriptCanOpenWindowsAutomatically(false); 
view.setWebChromeClient(new CustomWebChromeClient()); 
view.setWebViewClient(new CustomWebViewClient()); 
view.loadData(ARBITRARY_HTML, "text/html", "utf-8"); 

로드 된 HTML은 다음과 같습니다 : catch되지 않은 ReferenceError가가 ": ShowContent가 아닌 자바 스크립트 오류이 (안드로이드 전용) 런타임을 생산

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <title>My head hurts from head-desking</title> 
    <style type="text/css"> 
    #content 
    { 
     display: none; 
    } 
    </style> 
    <script type="text/javascript"> 
    //<!-- 
    function ShowContent() 
    { 
     document.getElementById('content').style.display = 'block'; 
    } 
    //--> 
    </script> 
</head> 
<body onload="ShowContent()"> 
    <div id="content"> 
    This content should be shown, but isn't! 
    </div> 
    <div id="other"> 
    All I see is this content... and that makes me question my self worth. 
    </div> 
</body> 
</html> 

여기

내가 웹보기를 인스턴스화하는 방법입니다 한정된".

+0

이것은 정말 내 머리 속에 들어 있습니다.이 코드 중 많은 부분이 버그를 찾으려고했기 때문에 "눈이 피었습니다."라는 문제 중 하나입니다. 나는 단순한 것을 보지 않고 있다고 확신한다. 일부 사람들은 jQuery를 사용하라고 제안했지만 실행하려고 시도한 자바 스크립트는 매우 단순합니다. 문제를 해결하기 위해 추가로 100kb를 포함시키는 것 같아요. 문제. – agenttom

+1

** 업데이트 ** 나는 테스트를 수행하여 두 개의 버튼을 만들었습니다. '. 두 번째 단추를 눌러 자바 스크립트를 직접 실행하면 잘 작동하지만 함수를 호출 할 수 없습니다. 나는 잡았다가 여기에있는 것을 정말로 이해할 수 없다. – agenttom

+0

다음과 같은 입력 필드가 있습니다. 위의 코드에서 잘 작동합니다. 이 문제를 해결하는 방법. 입력 필드 (찾아보기 버튼)를 숨기고 싶습니다. –

답변

5

나는 가정하고있다. 정말로 오래된 브라우저를위한 해킹으로 만들어진 //<!-- ... //--> 기술은 시대에 뒤 떨어진 것입니다. 그것을 제거하려고합니다.

+0

정말 대단합니다. 그거였다. 와우. 더 흥미로운 점은 모든 것을 "순응적"으로 만들어 행동으로 옮기려 노력하는 서사적 인 투쟁 끝에 그 사실을 드러내는 것입니다. 그거였다! 해결책을 찾았습니다. 나는 평판이 있다면 upvote;) – agenttom

+0

받아 들여 주셔서 감사. 너는 좋은 심문을 위해서 나에게 업보트를 받는다. 두 번째 댓글 업데이트가 나에게 필요한 힌트를주었습니다. 내가 인터넷 익스플로러에서 일한 이후로 정말 더러운 해킹을 안다. 힌트 : 안드로이드로 작업하는 동안 모두 잊어 버리십시오 .-) – Knickedi

+0

와우, 제 경우에는

관련 문제