我正在尝试将JavaScript加载到我的UIWebView中

时间:2012-07-30 21:15:49

标签: javascript iphone objective-c ios uiwebview

我正在尝试将JavaScript加载到UIWebView中。以下是我的代码:

- (void)viewDidLoad
{
    [super viewDidLoad];
    NSString *path = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"];
    NSURL *url = [NSURL fileURLWithPath:path];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    [webview loadRequest:request];
}

-(void)webViewDidFinishLoad:(UIWebView *)webView{

    NSString *javascript = [[NSString alloc] initWithContentsOfFile:@"script.js" encoding:NSUTF8StringEncoding error:nil];
    [webView stringByEvaluatingJavaScriptFromString:javascript];
}

我在这里做错了吗? Web视图完成加载,所以我假设我在使用Javascript做错了。

2 个答案:

答案 0 :(得分:0)

如果我正确理解您的问题,您正在尝试将JavaScript加载到UIWebView中。 [UIWebView stringByEvaluatingJavaScriptFromString]用于执行已在UIWebView中加载的函数。

为什么不在本地index.html文件中包含script.js,然后使用[UIWebView stringByEvaluatingJavaScriptFromString]调用script.js中定义的函数?

让我知道如果我误解了你的问题。

答案 1 :(得分:0)

  

你好!!

     

这是我的答案。这是我的工作代码。创建一个JSLibraries物理   项目工作区中的文件夹。将它添加到您的project.copy中   abc.js文件给它。

 - (void) addJSLibraryToHTML
{
    NSURL *jqueryLibPath =[[NSBundle mainBundle] URLForResource:@"abc" withExtension:@"js" subdirectory:@"/JSLibraries" ];
    NSString *offlineJqueryLib = [NSString stringWithFormat:@"function addJquery()"
                                  "{"
                                  "function loadScript(url, callback)"
                                  "{"
                                  "var script = document.createElement('script');"
                                  "script.type = 'text/javascript';"
                                  "script.onload = function () {"
                                  "callback();"
                                  "};"
                                  "script.src = url;"
                                  "(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(script);"
                                  "}"
                                  "if(window.jQuery===undefined)"
                                  "{"
                                  "loadScript('%@', function ()"
                                  "{"
                                  "//do call back to your native method from here"
                                  "});"
                                  "}"
                                  "} ; addJquery();",jqueryLibPath.absoluteString];
    [self stringByEvaluatingJavaScriptFromString:offlineJqueryLib];
}