2011-04-12 12 views
10

html'nin src = "xxxxx.php" olduğu bir iframe içerdiği bir sayfayı görüntülemek için WebView kullanıyorum.Webview iframe bağlantısı tarayıcıyı başlatmak için nasıl kullanılır?

Bu iframe, temelli bir bağlantıya sahip bir reklam resmi olarak yüklenir. Bu görüntüyü tıklarsam (link), yeni sayfayı orjinal iframe içinde yüklemeye çalışır (ki bu o kadar az alanda göstermez). Olmak istediğim şey, başvurduğum sayfayı yeni bir tarayıcı penceresinde açmak için bağlantıyı tıklamak.

Orijinal sayfayı görüntülemek için Android tarayıcısını kullanır ve bu iframe'i tıklarsam, bağlantıyı yeni sayfa olarak yükler. WebView ile aynı davranışı nasıl alırım? ShouldOverrideUrlLoading() ile bir WebViewClient kullanılması iframe bağlantısı tarafından aranıyor gibi görünmüyor.

cevap

15

Bir WebView kaynağında google reklamlarla benzer bir sorun yaşadım, çünkü bir iframe de yüklediler.

@Override 
    public void onLoadResource (WebView view, String url) { 
     if (url.contains("googleads")) { 
      if(view.getHitTestResult() != null && 
        (view.getHitTestResult().getType() == HitTestResult.SRC_ANCHOR_TYPE || 
        view.getHitTestResult().getType() == HitTestResult.SRC_IMAGE_ANCHOR_TYPE)){ 
       view.getContext().startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url))); 
       view.stopLoading(); 
      } 
     } 
    } 
+1

yoluyla tam olarak izlemek için hedef parametresi mümkün değildir olmadan iframe bağlantıları görünüyor = "blank _" hedefini içeriyorsa. 'ShouldOverrideUrlLoading() 'ifadesini kullanıyorsunuz, ancak kodunuzda' onLoadResource() 'işlevini kullanıyorsunuz. – ThomasW

+0

Ledgend! Bu snippet için teşekkürler! Thomas, shouldOverrideUrlLoading() referansını dikkate almayın, sanırım acidxwarp, java dosyasında fiziksel olarak yer alıyordu. Sadece onLoadResource'ı geçersiz kılın ve yeni hedefe – scottyab

+3

adamlar ateş etmeden önce hittestresult'u kontrol edin, bu aslında iframe tıklamasını algılamıyor, googleads olmayan başka bir şeyde tıklamanın nasıl algılayacağını belirleme şansınız yok mu? –

5

sizin shouldOverrideUrlLoading() altında, sizin WebViewClient bu deneyin: Bu bunu çözüldü nasıl iframe içinde. Linkler ek parametreler olmalıdır. Ben buldum:

  1. WebViewClient ait shouldOverrideUrlLoading iframe bağlantı = "_ parent" veya target = "_ top" hedef parametresi hedefi olan bir durum için yürütülecektir, WebViewClient ait
  2. onCreateWindow, durumda iframe bağlantı parametresi

cevabını tarafından karıştı biraz olduğum WebViewClient

0

bağlantılar tıklama algılamak için:

tipik önceki koda bir düzeltme teklif edebilirsiniz

  @Override 
      public void onLoadResource (WebView view, String url) { 
       if (url.contains("googleads")) { 
        if(view.getHitTestResult().getType() > 0){ 
         view.getContext().startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url))); 
         view.stopLoading(); 
         Log.i("RESLOAD", Uri.parse(url).toString()); 
        } 
       } 
      } 
İlgili konular