UIWebView的行为与Safari应用程序不同

时间:2012-05-05 10:04:45

标签: ios objective-c uiwebview

我正在开发一款UIWebView的iOS应用。 UIWebView中显示的网页在iOS上的Safari应用程序中显示正常,但当显示在UIWebView内时,点击“登录”按钮时没有任何反应:http://www.bnpsolutions.com/Common/Login_Mobile.aspx

有人知道为什么吗?

您可以在此处下载我的小型iOS示例项目: http://uploads.demaweb.dk/WebView.zip

EDIT1:

我已将WebView更改为显示a simple page which just including jQueryhttp://uploads.demaweb.dk/WebView2.zip

错误消息是:

WebView[13623:11703] JavaScript exception: (/ajax/libs/jquery/1.7.2/jquery.js):5187 - SYNTAX_ERR - SYNTAX_ERR: DOM Exception 12
Line:
(function(){ 

为什么UIWebView无法加载jQuery?

3 个答案:

答案 0 :(得分:0)

我建议定义委托方法:

– webView:shouldStartLoadWithRequest:navigationType:
– webViewDidStartLoad:
– webViewDidFinishLoad:
– webView:didFailLoadWithError:    /* especially this one!! */

并在其中放置一些NSLog跟踪,以便您可以看到发生了什么。 Safari可能比UIWebView更能抵御错误(或以更友好的方式处理错误),因此行为上存在差异。但你应该直接在你的应用程序中查看它......

答案 1 :(得分:0)

好吧,使用这个code来调试你的UIWebView我在你的javascript中找到了2个与资源/WebResource.axd相关的例外。检查一下,我希望它有用。

答案 2 :(得分:0)

关于生成的错误消息 - UIWebView确实能够加载jQuery - 当异常发生时,您获得有关异常的消息(基于关于如何调试UIWebView的注释中的链接)被提出 - 是否被捕获。

jQuery中的特定函数在函数开头附近有一个try / catch,它有意地尝试引发异常(并捕获它)。

试试这段代码,看看我的意思:

NSString *htmlString = @"<html><body>Hello World I am a <b>browser</b><script>(function(){try {var a=undefined; a();} catch (err) {} }());</script></body></html>";
[uiWebView loadHTMLString:htmlString baseURL:nil];

是否存在try / catch,将报告异常。