2011-11-21 1 views
1

Android WebView에서 임의의 Javascript 기능을 실행하고 그 결과를 얻으려고합니다. 함수를 호출하려면 loadUrl()을 사용하고 결과와 함께 호출되어야하는 Javascript 인터페이스를 추가했습니다. 이것은 내가 loadUrl (에서 실행하려고이 같은 JS)의 모습입니다 :
Android : Javascript 기능이 eval() 이후 계속되지 않음

(function() { 
    var res = eval(foo()); 
    MyInterface.setResult(res); 
})() 

foo 내가 앞서 추가 한 인터페이스입니다 내가 불러들이려고하고 MyInterface하고있는 함수의 이름을 의미합니다. 이 작업을 수행하면 foo()이 호출되지만 다음 호출에서는 호출되지 않습니다. MyInterface.setResult(res);console.log("finished")과 같은 간단한 JS 문으로 변경하려고했으나 eval() 뒤에는 아무 것도 실행되지 않습니다. eval을 제거하면 다음 명령문이 실행됩니다. 여기에 무슨 일이 벌어지고 있는지에 대한 어떤 생각?

+1

'foo()'는 무엇을 반환합니까? –

답변

2

eval은 문자열을 취합니다. foo가 반환하는 문자열을 호출하려고합니다.

시도해보십시오. eval ("foo()");

편집 : 당신은 단지 평가뿐만 아니라 함수를 호출 할 수 있습니다.

+0

젠장. 이것은 돌이켜 보면 아주 명백하게 보인다! 고마워요 :) –

관련 문제