2011-04-12 5 views
10

मैं एक पृष्ठ प्रदर्शित करने के लिए एक वेबव्यू का उपयोग कर रहा हूं जिसमें HTML में iframe शामिल है जहां src = "xxxxx.php" है।ब्राउज़र लॉन्च करने के लिए वेबव्यू आईफ्रेम लिंक कैसे प्राप्त करें?

यह iframe अंतर्निहित लिंक वाले विज्ञापन छवि के रूप में लोड होता है। अगर मैं उस छवि (लिंक) पर क्लिक करता हूं, तो यह मूल पृष्ठ iframe के भीतर नया पृष्ठ लोड करने का प्रयास करता है (जो उस छोटी सी जगह में ज्यादा नहीं दिखाता है)। मैं जो करना चाहता हूं वह एक नई ब्राउज़र विंडो में निर्दिष्ट पृष्ठ को खोलने के लिए लिंक पर क्लिक करना है, जिससे मेरा ऐप छोड़ रहा है।

यदि मैं मूल पृष्ठ प्रदर्शित करने के लिए एंड्रॉइड ब्राउज़र का उपयोग करता हूं और इस आईफ्रेम पर क्लिक करता हूं, तो यह लिंक को एक नए पृष्ठ के रूप में लोड करता है। मैं WebView के साथ एक ही व्यवहार कैसे प्राप्त करूं? ShouldOverrideUrlLoading() के साथ WebViewClient का उपयोग करना iframe लिंक द्वारा नहीं कहा जाता है।

उत्तर

15

मुझे वेबव्यू स्रोत में Google विज्ञापनों के साथ एक ही समस्या थी, क्योंकि वे एक आईफ्रेम में भी लोड होते हैं।

अपने WebViewClient में यह प्रयास करें, आम तौर पर अपने shouldOverrideUrlLoading()

  @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()); 
        } 
       } 
      } 
+1

के माध्यम से वास्तव में ट्रैक करने के लिए मैं थोड़ा अपने जवाब से उलझन में हूँ लक्ष्य पैरामीटर संभव नहीं बिना iframe लिंक लगता है। आप 'mustOverrideUrlLoading()' का उल्लेख करते हैं, लेकिन आपके कोड में आप 'onLoadResource()' का उपयोग करते हैं। – ThomasW

+0

लेजेंड! इस स्निपेट के लिए धन्यवाद! थॉमस, IverrideUrlLoading() के संदर्भ में अनदेखा करें, मुझे लगता है कि एसिडक्सवार जावा फ़ाइल में भौतिक प्रतिबिंबित कर रहा था। बस लोडरसोर्स पर ओवरराइड करें, और नए इरादे – scottyab

+3

लोगों को फायर करने से पहले हिटस्ट्रेसल्ट की जांच करें, यह वास्तव में आईफ्रेम क्लिक का पता नहीं लगाता है, किसी भी मौके पर आपने यह पता लगाया है कि Google मानचित्र नहीं है, उस पर क्लिक का पता लगाने का तरीका कैसा है? –

5

मैं पिछले कोड को एक फिक्स प्रस्ताव कर सकते हैं के तहत:

@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(); 
      } 
     } 
    } 
0

लिंक क्लिक का पता करने के लिए यह मैं इसे कैसे हल हो गई है iframe के अंदर। लिंक में अतिरिक्त पैरामीटर होना चाहिए। मैंने पाया कि:

  1. WebViewClient की shouldOverrideUrlLoading आइफ्रेम लिंक लक्ष्य पैरामीटर target = "_ जनक" या target = "_ शीर्ष" है जब एक मामले के लिए निष्पादित किया जाएगा,
  2. WebViewClient की onCreateWindow, मामले में , आइफ्रेम लिंक लक्ष्य होता है = "_ blank" पैरामीटर

WebViewClient

संबंधित मुद्दे