如何将javascript附加到iOS中的UIWebView?

时间:2012-05-17 07:53:14

标签: ios cocoa-touch uiwebview

我正在尝试更改UIWebView中的字体。 我尝试使用以下代码更改字体。

NSString *path = [[NSBundle mainBundle] bundlePath];
    NSString *cssPath = [path stringByAppendingPathComponent:@"test.css"]; 

    if(!cssPath)
    {
        NSLog(@"NO");
    }

    NSString *js = [NSString stringWithFormat:@"var cssChild = document.createElement('link');"
                    "cssChild = 'text/css';"
                    "cssChild = 'stylesheet';"
                    "cssChild = '%@';", cssPath];
    js = [NSString stringWithFormat:@"%@ document.getElementsByTagName('head')[0].appendChild(cssChild);", js];

    [webViewOfInitial stringByEvaluatingJavaScriptFromString:js];

我将css文件从互联网上加载到加载页面的标题中。 我的css文件就是这样的。

@font-face {
    font-family: 'Zawgyi-One';
    font-style: normal;
    src: local('Zawgyi-One');
}

body {
    font-family: 'Zawgyi-One';
}

然而,当我在加载完成的页面时检索html标签时,我找不到上面的css标签。 那么如何将该css文件附加到UIWebView's标头标签的当前页面? 或者是否有其他UIWebView字体更改教程?

感谢。

1 个答案:

答案 0 :(得分:2)

你正朝着正确的方向前进,但你没有提到,你试图改变哪种委托方法。 您可以在.js文件中使用javascript,因为稍后可能会对其进行更改,通过代码(而不是js文件)反映更改将非常麻烦。尝试使用此: -

您必须使用正确的baseURL参数将HTML加载到视图中,才能在UIWebView中使用相对路径或文件。

NSString *path = [[NSBundle mainBundle] bundlePath]; 
NSURL *baseURL = [NSURL fileURLWithPath:path];     
[webView loadHTMLString:htmlString baseURL:baseURL]; 

baseURL接受NSURL对象作为文件引用。您可以根据需要指定本地URL或网络URL。按照您的要求,在webViewDidFinishLoad:(UIWebView *)webView中添加css文件。

注意: - 选择.js文件并取消选中bullseye列,将其指示为已编译的代码。(如果不这样做,您将收到警告)。

这是UIWebview Javascript Tutorial,可能会让你前进。