2011-07-29 110 views
6

我正在寻找一种方法来加载我的UIWebView与本地CSS文件,应该影响UIWebView的loadRequest。用CSS本地文件加载UIWebView

为清晰度: 我有一个UIWebView,我loadRequest它与网站的网址。 我也有一个本地CSS文件,应该会影响这个loadRequest url。

我想加载这个CSS文件到UIWebView。

感谢,

回答

3

stackoverflow question似乎有一个或两个答案,可以帮助您。

你需要加载本地的CSS(使用没有什么不同@Shrey使用的方法,而是寻找你的CSS文件),并以某种方式将其注入页面,唯一的办法似乎是使用:

[webview stringByEvaluatingJavaScriptFromString:someJavascriptToInjectCSS]; 

和一些聪明的JavaScript来修改页面添加CSS中。

希望这有助于你指出正确的方向。我已经使用这种方法将东西注入到页面中,所以它可以工作,但我不太了解Javascript以编写代码将CSS注入页面。

+0

对不起,我搞砸了答案上的链接 - 现在编辑。在那个页面上有一个答案,它看起来像你想要的那样,包括js。 – iandotkelly

+0

谢谢,但是可以在UIWebView上加载自定义css文件来加载Google这样的网站,还是应该放弃这个选项? – jkigel

+0

是的,你可以在SO问题中使用答案 - 我所指的答案是:http://stackoverflow.com/questions/1893715/is-it-possible-to-use-stringbyevaluatingjavascriptfromstring-with-javascript-whic/1895864#1895864此答案显示从本地文件加载CSS并将其注入到Web视图中。 – iandotkelly

-1

试试这个:

[WebView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"]isDirectory:NO]]];

+1

不认为会做什么OP是要求。对于初学者来说,它是一个他们想要加载的本地CSS文件,而不是一个html文件,然后他们想要将CSS注入到没有引用它的页面中。 – iandotkelly

+0

然后尝试使用webview委托方法。 – Hisenberg

0

这是Swift版本。

webViewDidFinishLoad委托方法中加载css文件并使用stringByEvaluatingJavaScriptFromString。 积分here

func loadWebViewStyles() { 
     guard let cssPath = NSBundle.mainBundle().pathForResource("theme", ofType: "css") else { 
      return 
     } 

     let loadStyles = "var script = document.createElement('link'); script.type = 'text/css'; script.rel = 'stylesheet'; script.href = '\(cssPath)'; document.getElementsByTagName('body')[0].appendChild(script);" 

     webView.stringByEvaluatingJavaScriptFromString(loadStyles) 
    }