使用JavaScript将CSS注入UIWebView
Injecting CSS into UIWebView using JavaScript
我正试图注入一个本地CSS文件来覆盖网页的样式。该网页显示在iOS中的UIWebView
容器中。但是,我无法使我的代码正常工作。请参阅下面我的委托方法的片段。这段代码运行(我可以看到NSLog
消息),但在页面上看不到它的执行结果。
我知道它不可能是我写的CSS,因为在这种情况下,我使用了自己的CSS文件,只是更改了一些颜色。(为了测试这种方法)
-(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");
}
您的解决方案无法工作,因为
- 您的
cssNode.href
应该是URL(即转义并以file://
为前缀),而不是路径 - Safari不允许您从远程页面加载本地文件,因为这有安全风险
在过去,我使用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];
相关文章:
- 使用Objective-C的JavaScript注入方法
- 正在注入包含JS的HTML
- 正在阻止UIWebView警报
- 迷你$provider注入茉莉花和角
- UIWebview在页面上执行注入的JavaScript后的屏幕截图
- 将javascript注入uiwebview以调整字体大小
- 在UIWebView的Objective-c中注入JQuery函数
- 将文本注入 UIWebView 文本字段
- 当从设置中将Javascript注入UIWebView时,我只得到数字
- 如何在UIWebView-iOS加载的iframe中注入javascript
- 将JavaScript函数注入UIWebView不总是工作
- 使用JavaScript将CSS注入UIWebView
- 如何注入javascript到一个网页加载在UIWebView
- 注入的Javascript没有在UiWebView中重写URL
- 在ios8的uiwebview中注入javascript
- 注入一个本地javascript到UIWebView中
- UIwebview中的CSS注入
- 如何使用注入的JavaScript滚动UIWebView到一个点
- 我可以注入/运行Javascript在不同的域框架在UIWebView
- UIWebView不能注入HTML