0

コントローラーに次のものがありますが、ページで関数を呼び出さない理由がわかりません (何もしません)。どんな助けでも大歓迎です-これを初めて使用する:

- (void)viewDidLoad
{
    [super viewDidLoad];
    NSString *fullURL = @"http://local.com/js-more.html";  // this does laod
    NSURL *url = [NSURL URLWithString:fullURL];
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
    [arcWebView loadRequest:requestObj];

    NSString * param  = @"foo";   
    NSString * jsCallBack = [NSString stringWithFormat:@"myFunc('%@')",param];
    [arcWebView stringByEvaluatingJavaScriptFromString:jsCallBack];

そして私が持っているWebページで:

<script>

function myFunc(this_str){![enter image description here][1]
  alert('here is val: ' + this_str);
}
myFunc('here is in string');
</script>

これは、ブラウザーまたは組み込みの UIWebView で正しく警告されます。

thx事前に

編集 1

ここに画像の説明を入力

4

1 に答える 1

1

javascript を webviewdidfinishload デリゲート メソッド内に配置します。問題は、Web ページがまだロードされていない可能性があるため、ロード リクエストを呼び出した場合でもです。

webviewsデリゲートを設定し、そこにコードを配置すると、機能するはずです。

例えば

- (void)viewDidLoad {
    [super viewDidLoad];
    NSString *fullURL = @"http://local.com/js-more.html";  // this does laod
    NSURL *url = [NSURL URLWithString:fullURL];
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
    [arcWebView setDelegate:self];
    [arcWebView loadRequest:requestObj];
}

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    NSString * param  = @"foo";   
    NSString * jsCallBack = [NSString stringWithFormat:@"myFunc('%@')",param];
    [webView stringByEvaluatingJavaScriptFromString:jsCallBack];
}
于 2012-10-24T03:35:20.540 に答える