UIWebView插入新的<;脚本>;使用stringByEvaluatingJavaScriptFromString导入头部

UIWebView插入新的<;脚本>;使用stringByEvaluatingJavaScriptFromString导入头部,javascript,uiwebview,ipad,Javascript,Uiwebview,Ipad,我正在iPad上用iOS 3.2在UIWebView中加载现有html文档。加载HTML后,我运行以下代码将jQuery插入此文档: - (void)webViewDidFinishLoad:(UIWebView *)webView { NSLog(@"load complete"); if (webView == self.contentView) { [self.contentView stringByEvaluatingJavaScriptFromString: @"v

我正在iPad上用iOS 3.2在UIWebView中加载现有html文档。加载HTML后,我运行以下代码将jQuery插入此文档:

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
NSLog(@"load complete");
if (webView == self.contentView) {

    [self.contentView stringByEvaluatingJavaScriptFromString:
     @"var headID = document.getElementsByTagName(\"head\")[0];"    
     "var newScript = document.createElement('script');"
     "newScript.type = 'text/javascript';"
     "newScript.src = 'jquery-1.4.2.min.js';"
     "newScript.onload=window.location.assign(\"fj://jquery\");"
     "headID.appendChild(newScript);"];

}
NSLog(@"inserting jquery");
}
当fj://jquery的假请求出现时,将运行以下代码:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSLog(@"URL: %@", [[request URL] scheme]);

if ([[[request URL] scheme] compare:@"fj"] == NSOrderedSame) {
    NSString * command = [[request URL] host];

    if ([command compare:@"jquery"] == NSOrderedSame) {
        NSLog(@"got jquery");   

        NSString * offsetStr = [self.contentView stringByEvaluatingJavaScriptFromString:@"$('P:last').offset().top;"];

        NSLog(@"offset: %@", offsetStr);            

    }
    return NO;
}

return YES;
}
据我所知,这几乎是在UIWebView中将JS插入加载的HTML的标准方法

然而,我的问题是,我的jQuery代码没有运行,并且返回一个空字符串

我在原型测试应用程序中成功地使用了相同的代码。现在在真正的生产应用程序中,它不再工作了

以下是我为隔离问题所做的工作,但没有成功:

  • jquery-1.4.2.min.js与加载的HTML位于同一目录中
  • 网络视图不是零
  • 当我在safari中加载相同的HTML并在JS控制台中执行JS代码时,一切都按预期运行

我得到的一个提示是:原始文档中链接的stylesheet.css文件已损坏(0 KB),但我对此没有任何控制权。这就是我从客户那里收到包裹的方式。我应该能够使用它。

我不知道为什么,但确切的问题显然是脚本元素在第一个加载的HTML文件中没有被激活。以下文件能够毫无问题地使用脚本