UIWebView का वर्तमान URL प्राप्त करें


110

मैंने पहले से ही अपने UIWebViewसाथ वर्तमान URL प्राप्त करने की कोशिश की webview.request.URL:। दुर्भाग्य से NSURLखाली था। यहाँ कुछ भी गलत? मैं Xcode 3.2.2 बीटा 5 के साथ काम कर रहा हूं।

ऊपर दिए गए कोड को UIWebViewप्रतिनिधि में निष्पादित किया जाना चाहिए didStartLoad


उस कोड को करें currentURL = currentWebView.request.URL.absoluteString; आपके वेब दृश्य के बाद लोड का उपयोग करें - (शून्य) webViewDidFinishLoad: (UIWebView *) webView। शायद यह मदद कर सकता है।
Xcoder

ओपी, इस सवाल पर विचार 78k विचार यह एक बहुत अच्छी तरह से संदर्भित एक है। क्या आप भविष्य के भ्रम को रोकने के लिए भारी-भरकम वोटिंग के लिए स्वीकृत उत्तर को अपडेट करने का मन बना लेंगे? धन्यवाद!
अल्बर्ट रेनशॉ

जवाबों:


45

मैट का संस्करण ज्यादा साफ है। मैं सभी को सलाह देता हूं कि इसके बजाय उस एक का उपयोग करें

आप यह कोशिश कर सकते हैं:

NSString *currentURL = [webView stringByEvaluatingJavaScriptFromString:@"window.location"];

धन्यवाद। ऊपर मेरा कोड काम करता है जब didinishLoad में निष्पादित होता है .... कहीं मैंने पढ़ा है कि js संस्करण हर पृष्ठ पर काम नहीं करता है। पर में कोशिश करुँगी।
danielreiser

11
मैट उसका संस्करण बहुत क्लीनर है। तो हाँ, मैं सभी को सलाह देता हूं कि इसके बजाय उस एक का उपयोग करें।
रटर अप्स

1
यह m.youtube.com में उदाहरण के लिए काम करने का एकमात्र तरीका है। अन्य सभी उत्तर गलत URL लौटाते हैं।
cccrack

2
मैं वास्तव में "document.URL" का मूल्यांकन करता हूं, न कि "window.location" का (जो मेरे लिए हमेशा रिक्त था)। यह जेएस भारी साइटों पर पेज यूआरएल पर आंतरिक समायोजन के लिए उपयोगी है जो पारंपरिक पेज लोड का उपयोग नहीं कर सकता है।
स्मार्टीपी

1
ऊपर के दो लोगों को - अबाडा तल्जो और टैरनफैक्स - रटर्स ने काफी साहसपूर्वक (शाब्दिक रूप से, टेक्स्ट बोल्ड है) नोट किया है और विनम्रतापूर्वक कहा है कि लोगों को मैट के संस्करण का उपयोग करना चाहिए, जिसके नीचे 230 से अधिक लाइक्स हैं। स्पष्ट रूप से इसका जवाब देने के समय, इसने काम किया और इसे स्वीकार कर लिया गया और 30+ लोगों को लगा कि इसने भी काम किया है। यह अब 5.5 साल का है। अच्छा सामान, यात्रियों। नीचे मैट के जवाब के लिए लोगों को इंगित करने के लिए धन्यवाद।
ऐप देव गाइ

317

JS के माध्यम से window.location ने मेरे लिए मज़बूती से काम नहीं किया, लेकिन यह किया:

currentURL = currentWebView.request.URL.absoluteString;

साभार: http://mohrt.blogspot.com/2008/10/getting-url-from-uiwebview.html


9
यदि आप साइट को अन्य अनुरोध में कुछ विज्ञापन लोड करेंगे, तो आपको गलत url मिल जाएगा। अधिक स्पष्ट रूप से लिखा गया हैMark Sands
OdNairy

Google के खोज परिणामों के लिए काम नहीं करता है। Google से खोज परिणामों तक पहुँचने के दौरान यह मुझे Google URL नहीं खोज परिणाम पृष्ठ url दिखा रहा है। कोई मदद .........
नीरव गढ़िया

@iOSDeveloper Google संभवतः URL को हेरफेर करने के लिए "HTML5" पुश स्थिति का उपयोग करता है जिसमें अन्य अनुरोध को निष्पादित करना शामिल नहीं है (इसलिए currentWebView.request अपडेट नहीं है)।
danw

3
यदि वेबसाइट ने इतिहास
.pushState

1
स्विफ्ट 4 में: webView.request? .MainDocumentURL? ?AbsoluteString
दिमित्रीकैनुनिकॉफ

55

यहाँ एक कोड है जिसका उपयोग मैं url को हर बार जब आप webview में एक अलग लिंक पर नेविगेट करने के लिए करते हैं:

- (void)webViewDidFinishLoad:(UIWebView *)aWebView
{
  self.url = aWebView.request.mainDocumentURL;
}

जब मैं यह कोशिश करता हूं, तो विधि को कभी नहीं बुलाया जाता है। क्या कुछ ऐसा है जो मुझे याद आ रहा है?
ग्रेग

1
@ स्पष्ट करें कि आपने खुद को UIWebView के प्रतिनिधि के रूप में सेट किया है
bendytree

1
webView.request.URL.absoluteStringलौटते समय मेरे लिए यह काम कियाnil
bendytree

धन्यवाद, यह मेरे लिए भी काम किया और यह currentWebView.request.URL.absoluteString से बेहतर है;
वेब हॉबी

36

मैंने यह भी पाया कि ऊपर अनुमोदित उत्तर विश्वसनीय नहीं था। लेकिन एक मामूली संशोधन के साथ, यह हर बार काम करता है:

NSString *currentURL = [webView stringByEvaluatingJavaScriptFromString:@"window.location.href"];

जावास्क्रिप्ट के लिए ".href" के अतिरिक्त पर ध्यान दें क्योंकि यह कोड की पंक्ति के अंत में छिपा हुआ है।


2
धन्यवाद सारा, आपका तरीका काम करता है भले ही UIWebView ने एक पृष्ठ को केवल आंशिक रूप से लोड किया हो।
दिमित्री मकरेंको

18

यह सही नहीं है, और एक शून्य लौटाएगा:

NSString *currentURL = [webView stringByEvaluatingJavaScriptFromString:@"window.location"];

हालाँकि, नीचे दिया गया कोड URL प्राप्त कर सकता है, लेकिन url वर्तमान URL नहीं हो सकता है:

NSString *url = _webView.request.URL.absoluteString;

सही एक है:

NSString *currentURL = [_webView stringByEvaluatingJavaScriptFromString:@"window.location.href"];


4

IPhone पर Google खोज परिणामों के लिए यह प्रयास किया गया:

 NSString* currentURL = webView.request.URL.absoluteString;
 NSString* mainDocumentURL = webView.request.mainDocumentURL.absoluteString;

दोनों एक ही स्ट्रिंग लौटाते हैं!


3

यहाँ मैं उपयोग कोड:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:[[[webView request] URL] absoluteString]]];

5
आप किसी मौजूदा NSURL से स्ट्रिंग प्राप्त करके एक NSURL बना रहे हैं; क्या आप कॉपी नहीं कर सकते webView.request.URL?
पास्कल


2

मैं shouldStartLoadWithRequestURL अपडेट को पकड़ने के लिए ईवेंट (UIWebViewDelegate) का उपयोग करता हूं । request.mainDocumentURL.absoluteStringआपको मुख्य वेब पेज का URL मिलेगा (जो सामान्य रूप से आप चाहते हैं), जबकि request.URL.absoluteStringसीएसएस और जावास्क्रिप्ट शामिल होंगे।



2

प्रतिनिधि पद्धति लागू करें,

- (BOOL)webView:(UIWebView *)webview shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    NSString  *URL = request.URL.absoluteString;    NSLog(@"%@",URL);
}

URL वह है जिसकी आपको सही आवश्यकता है।



1

WKWebView और UIWebview का वर्तमान URL प्राप्त करने के लिए

यहाँ कोड है।

if (self.wkWebView) {
   NSString  *URL = self.wkWebView.title;
}else if(self.uiWebView) {
   NSString *URL = self.uiWebView.request.title;
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.