0

我正在尝试将 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 上做错了什么。

4

2 回答 2

0

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

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

如果我误解了你的问题,请告诉我。

于 2012-08-03T20:54:08.123 回答
0

你好呀!!

这是我的答案。它是我的工作代码。在您的项目工作区中创建一个 JSLibraries 物理文件夹。将其添加到您的项目中。将您的 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];
}
于 2014-08-13T12:52:32.743 回答