2011-07-11 10 views
7

動作しない私は、UIWebView にロードされたローカルのHTMLファイルからJavaScript関数を呼び出すようにしようとしていますが、それはそれは、このstringByEvaluatingJavaScriptFromStringが

NSString *script=[NSString stringWithFormat:@"sample()"]; 

if (tekst.loading) { 
    NSLog(@"Loading"); 
} else { 
    NSLog(@"Fully loaded"); 
    [tekst stringByEvaluatingJavaScriptFromString:script]; 
} 

とhtmlで

ように見える

を対応deosn't

<head> 
.... 
<script type='text/javascript'> 
function sample() { 
alert('Paznja'); 
} 
</script> 
... 
</head> 
+1

が、 'stringWithFormat呼び出す必要:'ここを。文字列リテラルを直接代入するだけです: NSString * script = @ "sample()"; – highlycaffeinated

答えて

13

あなたのUIWebViewでデリゲートを使用していないかのように見えます。あなたがデリゲートを設定し、へのJavascriptの呼び出しを置く場合は、 " - (無効)webViewDidFinishLoad:(のUIWebView *)のWebView" 方法は、それが正常に動作します:

UIWebView *wv = [[UIWebView alloc] initWithFrame:CGRectMake(0.0, 0.0, 700.0, 700.0)]; 
[self.view addSubview:wv]; 
wv.delegate = self; 
[wv loadHTMLString:@"<html><head><script type='text/javascript'>function sample() {alert('Paznja');}</script></head><body><h1>TEST</h1></body></html>" baseURL:nil]; 
[wv release]; 

と同じクラスで:

- (void)webViewDidFinishLoad:(UIWebView *)webView { 
    [webView stringByEvaluatingJavaScriptFromString:@"sample()"]; 
} 

このコードを実行すると、警告メッセージが正常に機能します。

+0

明らかに!素敵な..ありがとう - それは私の日を救った。 – Lukasz

0

追加のノート、あなたが戻ってjavascript関数ではなく、文字列からオブジェクトを期待しているならば、以下ませんか:

あなたの質問に関係のない
NSString *json = [self.webView stringByEvaluatingJavaScriptFromString:@"JSON.stringify(TestMethod())"]; 
関連する問題