Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.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
检测UIWebView中的Javascript/Ajax更改_Javascript_Ios_Ajax_Uiwebview - Fatal编程技术网

检测UIWebView中的Javascript/Ajax更改

检测UIWebView中的Javascript/Ajax更改,javascript,ios,ajax,uiwebview,Javascript,Ios,Ajax,Uiwebview,我正在尝试检查是否为我的用户加载了某个页面。用户在UIWebView中经历注册过程,我想知道注册过程何时完成。问题是注册不会改变网页,它使用Javascript和Ajax更新屏幕上的内容。如此运行: [webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.innerText;"]; 在webViewDidStartLoad中,仅在首次加载初始站点时返回。基本上,我只想检查页面上的文本,只要它变为字符串

我正在尝试检查是否为我的用户加载了某个页面。用户在UIWebView中经历注册过程,我想知道注册过程何时完成。问题是注册不会改变网页,它使用Javascript和Ajax更新屏幕上的内容。如此运行:

[webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.innerText;"];

在webViewDidStartLoad中,仅在首次加载初始站点时返回。基本上,我只想检查页面上的文本,只要它变为字符串匹配,比如Success,那么我就知道用户已经成功登录了。可能吗?

是的,你可以这样做。在页面上的JavaScript中,执行以下操作

window.location = 'myprotocol://userDidSignUp'
然后在UIWebViewDelegate中执行以下操作

- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType
{
    if(request == nil)
    {
        return YES;
    }
    NSString* urlStr = [[request URL] absoluteString];
    if(urlStr != nil && [urlStr isEqualToString:@"myprotocol://userDidSignUp")
    {
        //User signed in
        return NO;
    }

    return YES;
}

不幸的是,他们没有注册到由我控制的网站。你可以编写javascript来检查DOM,看看是否有文本发生了更改,然后使用stringByEvaluatingJavaScriptFromString运行它:你可以每1-2秒运行一次。我不确定这是否是最好的解决方案。是的,这就是我正在做的。这是可行的,但不知道是否有更有效的解决方案。谢谢你的帮助!