2017-03-09 16 views
9

HTML web sayfası ve iki iframe ile bir web görünümü görüntüleyen yerel bir ios uygulamasına sahibiz. Bu iframe'lerin içinde, makalemizi, uygulamanın kaynaklarında bulunan HTML dosyalarından görüntüleriz. Makalelerin içinde, her iki makalede de aynı anda çalışan javascript betikleri vardır. Örneğin, metnin bir kısmını kalın yapın. Bunu yapmak için, belirli bir sınıfla tüm öğeleri listeler ve CSS stilini değiştirir. sadece Android'de geçerli iframe öğeleri döneceğini neredeAndroid WebView - başka bir iframe içindeki bir iframe'den erişim sınıfları

$(".question").length() 

iOS, hem iframe'lerinde sınıfta .question ile eleman sayısını döndürecektir. "Geçerli" ile, kullanıcının betiği başlatmak için etkileşimde bulunduğu anlamına gelir.

Ayrıca bir android uygulaması yayınlama gereksinimimiz var. Her şey iyiydi, javascript'in her iki iframe üzerinde çalıştığı bir makaleyi test edene kadar. Ne yazık ki, sadece bir iframe öğesinden erişebilir.

Makalelere eklenmiş javascript'lerin kodunu değiştirmeden çalışmanın herhangi bir yolu var mı? Orada otorite yok [ayrıca güncellemek için birçok özel javascript içeren binlerce makale olabilir].

i benzer bir durum

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"); 

yönetilen ve belirtilen aynı işlevi bir iç sınıf oluşturmak ve çağırmak zorunda böyle mi size

+0

[bu] (https://stackoverflow.com/questions/11955413/accessing-elements-of-one-iframe-from-another-iframe) ve [this] (https: // stackoverflow. com/sorular/4132411/how-to-call-a- fonksiyon-içinde-bir-iframe-dan-ebeveyn-sayfa)? –

+0

Evet, değiştirmem gereken bir yolun içeriğinde değişiklikler olmasını gerektiriyordu. – Krystian

cevap

0

ederiz 'app.function1'

olarak javascript arayüzü
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

Gerçekten senin örneğini anlamadım. Sadece bir web sayfası yüklüyorsunuz ve iki javascript arayüzü fonksiyonunu ortaya koyuyorsunuz. Bu, başka bir iframe'den bir iframe içeriğine erişimde nasıl yardımcı olur? – Krystian

İlgili konular