5

का उपयोग कर UIWebView में सीएसएस इंजेक्शन करना मैं वेबपृष्ठ की स्टाइल को ओवरराइड करने के लिए स्थानीय सीएसएस फ़ाइल इंजेक्ट करने का प्रयास कर रहा हूं। वेबपृष्ठ को आईओएस में UIWebView कंटेनर में प्रस्तुत किया गया है। हालांकि मैं अपना कोड काम करने में सक्षम नहीं हूं। नीचे मेरे प्रतिनिधि विधि का स्निपेट देखें। यह कोड चलता है (मैं NSLog संदेश देख सकता हूं) लेकिन मुझे पृष्ठ पर इसके निष्पादन के नतीजे दिखाई नहीं देते हैं।जावास्क्रिप्ट

मुझे पता है कि यह सीएसएस नहीं लिखा जा सकता है क्योंकि इस मामले में मैंने पृष्ठों को अपनी सीएसएस फ़ाइल ली और बस कुछ रंग बदल दिए। (आदेश में इस विधि का परीक्षण करने के लिए)

-(void)webViewDidFinishLoad:(UIWebView *)webView 
{ 
    NSString *path = [[NSBundle mainBundle] bundlePath]; 
    NSString *cssPath = [path stringByAppendingPathComponent:@"reader.css"]; 
    NSString *js = [NSString stringWithFormat:@"var headID = document.getElementsByTagName('head')[0];var cssNode = document.createElement('link');cssNode.type = 'text/css';cssNode.rel = 'stylesheet';cssNode.href = '%@';cssNode.media = 'screen';headID.appendChild(cssNode);", cssPath]; 
    [webView stringByEvaluatingJavaScriptFromString:js]; 
    NSLog(@"webViewDidFinishLoad Executed"); 
} 

उत्तर

9

आपका समाधान क्योंकि

  1. अपने cssNode.href एक URL होना चाहिए काम नहीं करेगा (यानी भाग निकले और file:// उपसर्ग के साथ), नहीं एक रास्ता
  2. सफारी आपको दूरस्थ फ़ाइलों से स्थानीय फ़ाइलों को लोड नहीं करने देता है, क्योंकि यह एक सुरक्षा जोखिम है।

अतीत में मैंने इसे NSURLConnection का उपयोग करके HTML डाउनलोड करके और HTML शीर्ष में <style> टैग जोड़कर ऐसा किया है। कुछ की तरह:

NSString *pathToiOSCss = [[NSBundle mainBundle] pathForResource:@"reader" ofType:@"css"]; 
NSString *iOSCssData = [NSString stringWithContentsOfFile:pathToiOSCss encoding:NSUTF8StringEncoding error:NULL]; 
NSString *extraHeadTags = [NSString stringWithFormat:@"<style>%@</style></head>", iOSCssData]; 
html = [uneditedHtml stringByReplacingOccurrencesOfString:@"</head>" withString:extraHeadTags]; 

[webView loadHTMLString:html baseURL:url]; 
+0

वास्तव में यह है कि मैं क्या जरूरत है, बहुत धन्यवाद – 2cupsOfTech

+0

:) इस खाते में – Daniel

+0

भी की संभावना नहीं ले करता है, एक एचटीएमएल भी एक हेड टैग – Daniel