UIWebView and local css file?

You can load CSS from local project directory.

Up vote 4 down vote favorite 8 share g+ share fb share tw.

I want to style a web page meant for the desktop so that it is presentable on a UIWebView on iPhone. I do not have access to the web server from which the pages originate. I would like to do this by changing the href attribute of the stylesheet element programmatically.

I do the following with my IBOutlet UIWebView *webView. NSString *cssPath = NSBundle mainBundle pathForResource:@"MyStyleSheet" ofType:@"css"; NSString *js = @"document. GetElementsByTagName('link').

SetAttribute('href','"; NSString *js2 = js stringByAppendingString:cssPath; NSString *finalJS = js2 stringByAppendingString:@"');"; //check element structure NSString *res = webView stringByEvaluatingJavaScriptFromString:finalJS; This does not work. Using the webView stringByEvaluatingJavaScriptFromString: message and making a change to the backgroundColor of the body does indeed work - done as an exercise to see if I was using the call correctly. Am I barking up the wrong tree?

Css iphone cocoa-touch uiwebview link|improve this question edited Jan 19 '10 at 21:17John Rudy11.8k63368 asked Jan 9 '10 at 2:45Edward Bender2112.

You can load CSS from local project directory NSString *path = NSBundle mainBundle bundlePath; NSURL *baseURL = NSURL fileURLWithPath:path; webView loadHTMLString:htmlString baseURL:baseURL; detail info check this site : http://iphoneincubator.com/blog/windows-views/uiwebview-revisited.

Unfortunately UIWebView doesn't provide an API for intercepting and modifying the requests that it makes while loading a resource. This means that any approach you try will be hack-ish to a certain extent. The first approach I would try is: Provide your own UIWebViewDelegate delegate on the view.

Implement -webView:shouldStartLoadWithRequest:navigationType: and return NO when you spot the CSS requests being made. Once the view has finished loading the main resource, use -stringByEvaluatingJavaScriptFromString: to inject JavaScript into the page that dynamically loads/sets the stylesheet that you want to use. In the JavaScript I would create an entirely new element/node on the document instead of trying to modify the existing one.

Your code should work, if you choose index 0 of the found elements: NSString *js = @"document. GetElementsByTagName('link')0. SetAttribute('href','"; NSString *js2 = js stringByAppendingString:cssPath; NSString *finalJS = js2 stringByAppendingString:@"');"; webview stringByEvaluatingJavaScriptFromString:finalJS; You missed 0.

I cant really gove you an answer,but what I can give you is a way to a solution, that is you have to find the anglde that you relate to or peaks your interest. A good paper is one that people get drawn into because it reaches them ln some way.As for me WW11 to me, I think of the holocaust and the effect it had on the survivors, their families and those who stood by and did nothing until it was too late.

Related Questions