2017-03-09 1 views
9

HTML 웹 페이지와 두 개의 iframe이있는 웹보기를 표시하는 기본 ios 응용 프로그램이 있습니다. 이러한 iframe 내부에는 앱 리소스에있는 HTML 파일에서 기사가 표시됩니다. 기사 안에는 종종 두 기사에서 동시에 작동하는 javascript 스크립트가 있습니다. 예를 들어 텍스트의 일부를 굵게 표시하십시오. 이를 위해 특정 클래스의 모든 요소를 ​​나열하고 CSS 스타일을 수정합니다. 그것은 단지 안드로이드에 현재 iframe 대응의 요소를 반환 곳Android WebView - 다른 iframe 내부의 한 iframe에서 클래스에 액세스

$(".question").length() 

는 아이폰 OS에 모두 iframe을 클래스 .question와 요소의 수를 반환합니다. "현재"란 사용자가 스크립트를 시작하기 위해 상호 작용했던 것을 의미합니다.

Android 앱도 출시해야합니다. javascript가 양쪽 iframe에서 작동해야하는 기사를 테스트하기 전까지 모든 것이 잘되었습니다. 불행히도 하나의 iframe에서만 요소에 액세스 할 수 있습니다.

기사에 첨부 된 javascript 코드를 변경하지 않고도 작동하도록 할 수있는 방법이 있습니까? 나는 거기에 아무런 권위가 없다. [업데이트 할 수있는 커스텀 자바 스크립트가 많이있는 수천 개의 기사가 될 수있다].

내가 비슷한 경우

webview.loadDataWithBaseURL("file:///android_asset/", your_html_as_string_here, "text/html", "utf-8", null); 
webview.getSettings().setJavaScriptEnabled(true); // enable javascript 
      webview.addJavascriptInterface(new WebViewJavaScriptInterface(getActivity()), "app"); 

을 관리하고에 언급 한 바와 같이 동일한 기능을 내부 클래스를 생성하고 호출해야하는 방법이 당신

+0

[this] (https://stackoverflow.com/questions/11955413/accessing-elements-of-one-iframe-from-another-iframe) 및 [this] (https : // stackoverflow. co.kr/questions/4132411/how-to-call-a- iframe - 부모 - 페이지에서 기능)? –

+0

예, 내용을 변경해야합니다. 변경할 방법이 없습니다. – Krystian

답변

0

감사합니다 'app.function1'

로 자바 스크립트 인터페이스
public class WebViewJavaScriptInterface { 

     private Context context; 

     /* 
     * Need a reference to the context in order to sent a post message l 
     */ 
     public WebViewJavaScriptInterface(Context context) { 
      this.context = context; 
     } 

     /* 
     * This method can be called from Android. @JavascriptInterface 
     * required after SDK version 17. 
     */ 

     @JavascriptInterface 
     public void function1() { 
      ll_translucent.setVisibility(View.VISIBLE); 
     } 

     /* 
       * This method can be called from Android. @JavascriptInterface 
       * required after SDK version 17. 
       */ 
     @JavascriptInterface 
     public void function2() { 
      new CommonActions(getActivity()).showSnackToast(verticalSeekBar, "Purchase Episode to read Further"); 
     } 
    } 
+0

솔직히 나는 당신의 모범을 이해하지 못합니다. 그냥 웹 페이지를로드하고 두 개의 자바 스크립트 인터페이스 함수를 노출하고 있습니다. 다른 iframe에서 한 iframe의 콘텐츠에 액세스하는 것이 어떻게 도움이됩니까? – Krystian

관련 문제