1

stringByEvaluatingJavaScriptFromStringを使用して、デバイス(ドキュメントフォルダー内)にあるローカルファイル(この場合はcssファイルですが、場合によってはjsファイルも)を参照するjavascriptを実行したいと思います...

 NSString *theJS = [[NSString alloc]
 initWithString:@"javascript:(function()
{the_css.rel='stylesheet';
the_css.href='the_css.css';
the_css.type='text/css';
the_css.media='screen';}
)();"];

[webView stringByEvaluatingJavaScriptFromString:theJS];

これをどのように機能させるのですか?次のような外部cssファイルを使用すると正常に動作します

the_css.href='http://www.website.com/the_css.css';
4

2 に答える 2

4

私が過去に行ったことは、HTMLをロードするときにこのコードを使用します

NSString *bundlePath = [[NSBundle mainBundle] bundlePath];
NSURL *baseURL = [NSURL fileURLWithPath:bundlePath];

[webView loadData:data MIMEType:@"text/html" textEncodingName:@"utf-8 " baseURL:baseURL];

これにより、バンドルの場所がベースURLとして渡され、相対URLが正しく機能するようになります。もちろん、この正確なloadData方法を使用する必要はありません。さまざまな過負荷があります。そこに入るだけbaseUrlで、あなたは行ってもいいはずです。

他のすべてが失敗した場合は、次のようなものを使用できます。

NSString *path = [[NSBundle mainBundle] pathForResource:@"file.css" ofType:nil]]

そして、それをいくつかの文字列置換などでページに挿入します。でも少しハッキー。

于 2009-12-12T15:20:03.270 に答える
0

このようにする必要があります。

NSString *cssPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"the_css.css"];
NSURL *baseURL = [NSURL fileURLWithPath:cssPath];


 NSString *theJS = [[NSString alloc]
 initWithFormat:@"javascript:(function()
{the_css.rel='stylesheet';
the_css.href='%@';
the_css.type='text/css';
the_css.media='screen';}
)();",baseURL];
[cssPath release];

[webView stringByEvaluatingJavaScriptFromString:theJS];

これで問題が解決することを願っています。

于 2009-12-13T07:46:36.057 に答える