Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c jQuery Mobile在离开webView中的主页后未触发webViewDidStartLoad和webViewDidFinishLoad_Objective C_Xcode_Ios5_Jquery Mobile_Uiwebview - Fatal编程技术网

Objective c jQuery Mobile在离开webView中的主页后未触发webViewDidStartLoad和webViewDidFinishLoad

Objective c jQuery Mobile在离开webView中的主页后未触发webViewDidStartLoad和webViewDidFinishLoad,objective-c,xcode,ios5,jquery-mobile,uiwebview,Objective C,Xcode,Ios5,Jquery Mobile,Uiwebview,我有一个简单的iOS应用程序,它有一个包含UIWebView的单一视图。在我的webView中,我显示我的jQuery移动网站 由于jQuery Mobile通过ajax加载页面,因此在初始页面加载后不会调用webViewDidStartLoad和webViewDidFinishLoad方法。我在SO上发现了类似的问题,例如,但我不确定在哪里使用window.location=“localFunction”调用,而且还没有人确认这是否有效 以下是我的问题(示例): 应用程序启动 调用了shoul

我有一个简单的iOS应用程序,它有一个包含UIWebView的单一视图。在我的webView中,我显示我的jQuery移动网站

由于jQuery Mobile通过ajax加载页面,因此在初始页面加载后不会调用
webViewDidStartLoad
webViewDidFinishLoad
方法。我在SO上发现了类似的问题,例如,但我不确定在哪里使用
window.location=“localFunction”
调用,而且还没有人确认这是否有效

以下是我的问题(示例):

  • 应用程序启动
  • 调用了
    shouldStartLoadWithRequest
  • webview加载
    ,并显示网络活动指示器
  • webViewDidFinishLoad
    被调用,网络活动指示器被隐藏,webView显示初始网页
  • 用户单击主页中的链接
  • 调用了
    shouldStartLoadWithRequest
  • 将显示第二个页面,但
    webViewDidStartLoad
    webViewDidFinishLoad
    在整个过程中不会再次调用 会议

  • 有没有办法强制jQuery Mobile或iOS应用程序调用
    webViewDidStartLoad
    webViewDidFinishLoad
    以便我可以执行一项简单的任务,例如在调用
    webViewDidStartLoad
    时显示网络活动指示器,在调用
    webViewDidFinishLoad
    时隐藏它

    webViewDidStartLoad
    webViewDidFinishLoad
    仅在
    window.location
    更改时调用
    UIWebView
    无法拦截Ajax调用

    您可以通过设置
    ajaxEnabled=“false”
    全局关闭JQM的Ajax导航,也可以使用
    data Ajax=“false”
    关闭单个页面/链接


    如果问题只是显示活动指示器;您可以通过调用
    $.mobile.showPageLoadingMsg

    webViewDidStartLoad
    webViewDidFinishLoad
    来使用JQM的内置活动指示器。只有在
    窗口位置更改时才会调用
    UIWebView
    无法拦截Ajax调用

    您可以通过设置
    ajaxEnabled=“false”
    全局关闭JQM的Ajax导航,也可以使用
    data Ajax=“false”
    关闭单个页面/链接


    如果问题只是显示活动指示器;如果要向页面更改的
    UIWebView
    发出信号,可以通过调用
    $.mobile.showPageLoadingMsg
    使用JQM的内置活动指示器;您可以使用问题中SO帖子中讨论的自定义方案启动选项

    定义一个
    窗口。在
    pagebeforechange
    处理程序中的位置
    更改:()

    在javascript中使用它

    $(document).on("pagebeforechange", function(eve, ui){
        logToIosConsole("pagebeforechange called on "+eve.currentTarget.URL);
    });
    
    在您的
    shouldStartLoadWithRequest中拦截此自定义url方案

    - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
    {
        NSString *theAnchor=[[[request URL] absoluteString] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding] ;
        if([theAnchor hasPrefix:@"log:\/\/"]) {
            NSString *logText=[theAnchor substringFromIndex:@"log:\/\/".length];
            NSLog(@"LogMsg==>%@",logText);
            return NO; 
        }
    }
    

    如果您想发出页面更改的
    UIWebView
    ;您可以使用问题中SO帖子中讨论的自定义方案启动选项

    定义一个
    窗口。在
    pagebeforechange
    处理程序中的位置
    更改:()

    在javascript中使用它

    $(document).on("pagebeforechange", function(eve, ui){
        logToIosConsole("pagebeforechange called on "+eve.currentTarget.URL);
    });
    
    在您的
    shouldStartLoadWithRequest中拦截此自定义url方案

    - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
    {
        NSString *theAnchor=[[[request URL] absoluteString] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding] ;
        if([theAnchor hasPrefix:@"log:\/\/"]) {
            NSString *logText=[theAnchor substringFromIndex:@"log:\/\/".length];
            NSLog(@"LogMsg==>%@",logText);
            return NO; 
        }
    }
    

    jQuery移动站点呈现页面的方式有问题。如果您禁用该站点的ajax导航,它们确实会被调用。在启用Ajax的情况下,单击链接时不会调用webViewDidStartLoad,因为页面是通过Ajax请求的,窗口位置不会更改,因此iOS不会注册页面更改或页面加载

    jQuery移动站点呈现页面的方式有问题。如果您禁用该站点的ajax导航,它们确实会被调用。在启用Ajax的情况下,单击链接时不会调用webViewDidStartLoad,因为页面是通过Ajax请求的,窗口位置不会更改,因此iOS不会注册页面更改或页面加载

    谢谢你的快速回复。。。我的JQM活动指示器正在显示,我只是想调用我的应用程序中的一些其他东西,这些东西将由
    webviewdidstartoad
    webViewDidFinishLoad
    方法调用。所以关闭ajax导航是唯一的解决办法?我会很快尝试…谢谢你的快速回复。。。我的JQM活动指示器正在显示,我只是想调用我的应用程序中的一些其他东西,这些东西将由
    webviewdidstartoad
    webViewDidFinishLoad
    方法调用。所以关闭ajax导航是唯一的解决办法?我会很快尝试…启用ajax后,
    webViewDidStartLoad
    函数仍然没有被调用,即使使用了“mylog”功能。使用我当前项目中的代码进行更新,我从JS登录到Xcode控制台……你能给我一个关于这将做什么的快速解释吗?(提前感谢)当在UIWebView中运行时,Javascript对LogToioConsole(msg)的所有调用都会将“msg”记录到xCode/iOS控制台。log://充当了从JS向ObjC发送消息的桥梁。我不认为这仍然会调用
    webViewDidStartLoad
    webViewDidFinishLoad
    。看看我在你上面的答案——jQuery Mobile通过Ajax加载页面似乎有问题。我真的很感谢你的帮助!启用ajax后,
    webViewDidStartLoad
    函数仍然没有被调用,即使使用“mylog”功能也是如此。使用我当前项目中的代码进行更新,我从JS登录到Xcode控制台……你能给我一个关于这将做什么的快速解释吗?(提前感谢)当在UIWebView中运行时,Javascript对LogToioConsole(msg)的所有调用都会将“msg”记录到xCode/iOS控制台。log://充当了将消息从JS发送到ObjC的桥梁