我正在寻找一种方法来加载我的UIWebView与本地CSS文件,应该影响UIWebView的loadRequest。用CSS本地文件加载UIWebView
为清晰度: 我有一个UIWebView,我loadRequest它与网站的网址。 我也有一个本地CSS文件,应该会影响这个loadRequest url。
我想加载这个CSS文件到UIWebView。
感谢,
我正在寻找一种方法来加载我的UIWebView与本地CSS文件,应该影响UIWebView的loadRequest。用CSS本地文件加载UIWebView
为清晰度: 我有一个UIWebView,我loadRequest它与网站的网址。 我也有一个本地CSS文件,应该会影响这个loadRequest url。
我想加载这个CSS文件到UIWebView。
感谢,
这stackoverflow question似乎有一个或两个答案,可以帮助您。
你需要加载本地的CSS(使用没有什么不同@Shrey使用的方法,而是寻找你的CSS文件),并以某种方式将其注入页面,唯一的办法似乎是使用:
[webview stringByEvaluatingJavaScriptFromString:someJavascriptToInjectCSS];
和一些聪明的JavaScript来修改页面添加CSS中。
希望这有助于你指出正确的方向。我已经使用这种方法将东西注入到页面中,所以它可以工作,但我不太了解Javascript以编写代码将CSS注入页面。
试试这个:
[WebView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"]isDirectory:NO]]];
不认为会做什么OP是要求。对于初学者来说,它是一个他们想要加载的本地CSS文件,而不是一个html文件,然后他们想要将CSS注入到没有引用它的页面中。 – iandotkelly
然后尝试使用webview委托方法。 – Hisenberg
这是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)
}
对不起,我搞砸了答案上的链接 - 现在编辑。在那个页面上有一个答案,它看起来像你想要的那样,包括js。 – iandotkelly
谢谢,但是可以在UIWebView上加载自定义css文件来加载Google这样的网站,还是应该放弃这个选项? – jkigel
是的,你可以在SO问题中使用答案 - 我所指的答案是:http://stackoverflow.com/questions/1893715/is-it-possible-to-use-stringbyevaluatingjavascriptfromstring-with-javascript-whic/1895864#1895864此答案显示从本地文件加载CSS并将其注入到Web视图中。 – iandotkelly