2009-11-12 14 views
6

मेरे ऐप में एक यूईवीब्यूव्यू है जो यूआरएल लोड करता है। मैं इसे ऑफ़लाइन देखने में सक्षम होने के लिए स्थानीय रूप से लोड किए गए पृष्ठ के HTML को सहेजने के लिए निम्न पंक्ति का उपयोग कर रहा हूं।आईफोन uiwebview सीएसएस और छवियों के साथ पूरा पृष्ठ डाउनलोड करें

NSString* html=[webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('html')[0].innerHTML"] 

समस्या केवल दस्तावेज है कि सहेजा जाता है, मैं HTML के साथ-साथ यह भी छवियों और सीएसएस को बचाने के लिए जैसे कि वह ऑनलाइन है ताकि उपयोगकर्ता पृष्ठ को देखने के लिए चाहते हैं के एचटीएमएल है।

जैसे "वेब पेज पूर्ण करें" या ऐसा कुछ, जिसे हम ब्राउज़र में उपयोग करते थे।

आपकी सहायता की सराहना करते हैं।

उत्तर

4

कोई आसान तरीका नहीं है। RegexKitLite (http://regexkit.sourceforge.net/RegexKitLite/index.html) का उपयोग करके HTML को Regex करें और सभी यूआरएल को .jpg, .gif, .png, और .css और .js और जो भी आपको चाहिए, को छीन दें।

बारी-बारी से, कॉल:

NSString* imgUrls=[webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('img')"] 

या ऐसा ही कुछ, मुझे कोई जावास्क्रिप्ट विशेषज्ञ हूँ ... और फिर जो कुछ भी वह सब देता है के साथ सौदा;)

क्षमा करें। यह rearheinie में दर्द है।

संपादित करें:

सहेजें iphone पर सभी img की, यह भी एचटीएमएल फ़ाइल सहेजें। आप पृष्ठ पुनः लोड करना चाहते हैं, एक स्ट्रिंग में एक फ़ाइल से एचटीएमएल लोड, और फिर

- (void)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL 

का उपयोग एचटीएमएल स्ट्रिंग लोड करने के लिए। baseURL का उपयोग निर्देशिका या साइट निर्दिष्ट करने के लिए किया जाता है, वेबव्यू उस एचटीएमएल स्ट्रिंग की कल्पना करेगा जो आपके हाथ में है। सभी यूआरएल उस के सापेक्ष होंगे।

नोट, बेशक यह पूर्ण यूआरएल के लिए बहुत अच्छी तरह से काम नहीं करेगा, केवल रिश्तेदारों के लिए। तो यह अपनी HTML फ़ाइल में, बंदर चीजों को देगा:

<img src="http://google.com/f/r/i/g/img.gif"> 

यह ठीक हो जाएगा, जबकि:

<img src="f/r/i/g/img.gif"> 

फिर, यह पूरे समाधान खाद का है। आप एक पूर्व-मौजूदा ओपन सोर्स रिकर्सिव एचटीएमएल स्पाइडर देख सकते हैं। मुझे लगता है कि Wget वह करता है जो आप चाहते हैं, लेकिन मुझे संदेह है कि इसे बिना किसी परेशानी के आईफोन के लिए संकलित किया जा सकता है।

+0

त्वरित जवाब मुझे पता है इसका एक दर्द के लिए धन्यवाद: एस लेकिन मैं अभी भी यह नहीं मिलता है .. अगर मैं सब IMGs टैग तो क्या है? - मैं उन्हें ऑफ़लाइन देखने के लिए कैसे रखूं? यदि आपको पता है तो अधिक समझाएं ... –

+0

और विवरण जोड़े गए। –

+0

मुझे लगता है कि मैं छवियों हिस्सा मिलता है .. लेकिन कैसे यू जावास्क्रिप्ट के साथ सीएसएस फ़ाइलें यूआरएल मिलता है क्योंकि टैग नाम के पाठ्यक्रम सीएसएस नहीं है फिर धन्यवाद! –

0

मेरे पास जांच करने का समय नहीं था, लेकिन ASIWebPageRequest बहुत ही आशाजनक seams। इसमें कहा गया है कि यह "एक ही स्ट्रिंग में एक पूरा वेब पेज स्टोर, या पेज से संदर्भित एक अलग फाइल में प्रत्येक बाहरी संसाधन के साथ" कर सकते हैं

ASIWebPageRequest 1

मैं अपनी परियोजनाओं में से एक पर इसे का उपयोग किया जाएगा, और फिर धागा अद्यतन करें।

Gonso