Tag: uiwebview

JavaScriptCore – 将函数作为parameter passing给ObjC

我有一个利用JavaScriptCore的UIWebView。 我试图从网页调用一个ObjC函数。 但是,该函数需要asynchronous调用,所以我传递了一个callback函数,当调用asynchronousObjC函数时调用。 这是我的理解,JS函数通过桥梁相当于NSBlock。 我现在的代码是: context[@"currentUserLocation"] = ^( void(^callback)(NSString* str) ) { NSLog(@"Starting Async Function"); //generic async function dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ NSLog(@"delay complete"); callback( @"return value" ); }); }; 我在做什么有什么根本性的错误? 从表面上看,ObjC似乎不知道在哪个上下文中运行callback函数。

将从应用程序获取的地理位置传递给UIWebView

我正在开发iOS应用程序,并且在其中一个视图中,我想将UIWebView包含一个包含地图的页面(地址是: https : //carsharing.mvg-mobil.de )。 该网站需要位置权限,所以一旦用户出现这个视图,就会出现一个提示:“ https://carsharing.mvg-mobil.de/想使用你的当前位置,确定/不允许”。 在我的应用程序中,我有从CoreLocation框架中获取的用户的位置。 有没有办法将这个位置传递给这个webview来避免这个警报视图? 通过注入一些JavaScript代码或者某种方式包括URL中的地理位置可能会以某种方式实现?

iPhone:通过javascript在uiwebview中加载本地html

我知道这有点混乱,但我们试试吧。 我有我的iphone应用程序uiwebview,它是从bundel的HTML本地文件加载..我想把HTMLbutton在这个文件,可以加载另一个本地文件使用JavaScript …是可能的? 有没有其他的方法,但是.. 任何帮助将不胜感激

如何检测UIWebView何时开始select文本?

我有一个UIWebView显示静态内容,并通过其控制器对各种轻扫手势作出反应。 文本select已被禁用,但现在我正在开发一个新的function,允许select文本,并提供一个自定义的上下文菜单。 现在我需要能够检测文本select何时处于活动状态,以便我可以closures滑动手势。 我能想到的唯一方法是检查是否有选中的文本在滑动处理程序方法中使用JS。 任何其他的想法? 有人知道如何做得更好吗? 谢谢。

使用Javascript跳转到UIWebView中的search结果

我已经build立了与JavaScript的uiwebviewsearch工作很好,但我希望能够跳转到search结果中的下一个发现的单词。 我已经成功地通过使用此代码创build视图以滚动到第一个实例: if (uiWebview_SearchResultCount == 1) { var desiredHeight = span.offsetTop – 140; window.scrollTo(0,desiredHeight); } 我怎么能得到这个searchresultcount更新到下一个find的结果(比如说,2,3,4,5等),当用户按下button在应用程序? 提前致谢。

将JavaScript注入到UIWebView中

我想使用stringByEvaluatingJavaScriptFromString:改变一个WebView,它不会像我期望的那样执行。 这里是代码,这JS虽然不执行。 任何想法为什么? UIWebView *wv = [UIWebView alloc] init]; NSURL *url = [[NSURL alloc] initWithString:@"http://www.google.com"]; NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url]; [wv loadRequest:request]; [wv stringByEvaluatingJavaScriptFromString:@"document.write('This Works')"];

每次启动时UIWebView白屏,同时预加载所有选项卡

在提出我的问题之前,我想提一提,我尝试在这里和这里寻找解决scheme。 我正在创build一个混合应用程序,它使用本机UIWebView呈现响应式devise的Web应用程序。 以下是问题描述: 1.我有一个UITabBarController 。 2.每个选项卡都有一个UIWebView 。 3.我必须预载所有标签。 4.我显示一个UIActivityIndicator直到内容加载到第一个选项卡上。 5.白屏出现约8-10秒 ,然后内容开始出现。 我会很高兴看到这个时间成为2-4秒 。 以下是我的实施: [self performSelectorOnMainThread:@selector(loadAllTabs) withObject:nil waitUntilDone:YES]; -(void) loadAllTabs { for(UIViewController * viewController in self.viewControllers){ if(![[NSUserDefaults standardUserDefaults]boolForKey:@"isSessionExpired"]) { if((int)[self.viewControllers indexOfObject:viewController] != 4) { viewController.tabBarItem.tag = (int)[[self viewControllers] indexOfObject:viewController]; [viewController view]; } } } } 在WebView控制器的viewDidLoad我有: [_tgWebView loadRequest:[NSURLRequest requestWithURL:homeURL]]; 我期待SuppressesIncrementalRendering ,但由于我预载所有标签,这是行不通的。 由于我的应用程序支持iOS 7+ ,因此WKWebView无法在这里应用。 我也想过增加发射图像的时间,但得知这不是一个好的做法。 […]

如何清除ipad中的webviewcaching

这里我已经使用uiwebview加载了内容 [webView loadHTMLString:[theApp.contentArr objectAtIndex:spineIndex] baseURL:url]; 回去后,我需要清除caching 在这里我已经尝试了这些方法来清除caching: [webView stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML = \"\";"]; [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"about:blank"]]]; // remove all cached responses [[NSURLCache sharedURLCache] removeAllCachedResponses]; // set an empty cache NSURLCache *sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:0 diskCapacity:0 diskPath:nil]; [NSURLCache setSharedURLCache:sharedCache]; 但没有用,这是什么解决scheme…..

UIWebView:为什么请求在使用不存在的主机名时不超时?

我的情况是这样的: 我有一个UIWebView ,它向主机名由用户提供的URL发出POST请求。 当主机名不存在时,我需要超时,以便我可以提醒用户说他们应该检查他们的设置。 发生什么事: 我提出这样的要求: NSString *theURL = [NSString stringWithFormat:@"https://%@%@", _hostname, LOGIN_PART_URL]; NSString *body = [NSString stringWithFormat:@"Username=%@&Password=%@", _username, _password]; NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL:[NSURL URLWithString:theURL] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:_timeoutInSecs]; [request setHTTPMethod: @"POST"]; [request setHTTPBody: [body dataUsingEncoding: NSUTF8StringEncoding]]; [web loadRequest:request]; 当networking上不存在主机名时,我不会收到任何超时响应。 我已经实现了UIWebViewDelegate所有委托方法,并且当我使用一个不存在的主机名时,我得到以下调用: webView: shouldStartLoadWithRequest: navigationType: (为了testing,总是返回true) webViewDidStartLoad 就是这样 – 之后没有任何东西。 我很惊讶, webViewDidStartLoad被调用,因为这表明它find了URL,并认为它可以从中获取数据。 但它不能作为URL不存在! 我在这里做错了什么? 我有一个解决方法,我要实现,它使用NSTimer来查看是否在超时时间内收到响应。 不过,我在取消UIWebView的请求方面遇到了问题 – […]

MonoTouch UIWebView和EvaluateJavascript

我有一个应用程序工作在以下环境: Monotouch 2.1 MonoDevelop 2.4.2 MacOS 10.6.8 iOS SDK 4.3 同样的应用程序,迁移到iOS 5.0 / 5.1和Monotouch 5.2.10与MonoDevelop 2.8.8.4下,有以下问题:当我点击一个button导航UIWebView不起作用。 代码是:(显然它在Monotouch 2.1中是一样的) public void ScrollToTop (object sender, EventArgs evt) { webView.EvaluateJavascript("window.scrollTo(0,0)"); } 我能做什么? 解决(与Jonathan.Peppers帮助): public void ScrollToTop (object sender, EventArgs evt) { if((UIDevice.CurrentDevice.CheckVersion(5, 0)){ System.Drawing.PointF p = new System.Drawing.PointF(0, 0); webView.ScrollView.SetContentOffset(p,true); } else{ webView.EvaluateJavascript("window.scrollTo(0,0)"); } } 我已经这样做了,因为在4.3 webView.ScrollView.SetContentOffset使应用程序崩溃。