Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.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
获取cocoa中的webkit版本_Cocoa_Webkit - Fatal编程技术网

获取cocoa中的webkit版本

获取cocoa中的webkit版本,cocoa,webkit,Cocoa,Webkit,我正在开发需要CSS预览的OSX应用程序。 我需要找到一种方法来区分使用safari 5.0的用户和使用safari 5.1的用户,因为webkit preview在这两个版本中有很多不同之处。 例如,梯度径向解释是完全不同的 有没有办法拦截webkit版本 您可以使用JavaScript获取当前WebKit版本的用户代理字符串。就这样做吧: NSString* userAgent = [webView stringByEvaluatingJavaScriptFromString:@"navig

我正在开发需要CSS预览的OSX应用程序。 我需要找到一种方法来区分使用safari 5.0的用户和使用safari 5.1的用户,因为webkit preview在这两个版本中有很多不同之处。 例如,梯度径向解释是完全不同的


有没有办法拦截webkit版本

您可以使用JavaScript获取当前WebKit版本的用户代理字符串。就这样做吧:

NSString* userAgent = [webView stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"];
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/534.51.14 (KHTML, like Gecko)
这将产生如下结果:

NSString* userAgent = [webView stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"];
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/534.51.14 (KHTML, like Gecko)

然后,您可以解析用户代理字符串以获取正在使用的WebKit版本。

这有助于您在加载请求之前获取WebKit版本,这样您就可以组合自己的用户代理。因此,这个解决方案更好:

NSBundle *webKit = [NSBundle bundleWithIdentifier:@"com.apple.WebKit"];
NSString *version = [[webKit infoDictionary] objectForKey:@"CFBundleVersion"];

if (webKit && [webKit load]) {
    NSLog(@"%@", [webKit infoDictionary]);
}

[webKit unload]; // you might also unload the bundle, if you don't need it later

第一个答案(
stringByEvaluatingJavaScriptFromString
)不起作用,出于某种原因返回了null,但这一个返回了null。当WebView未完全加载且JS未完全初始化时,可能会发生这种情况。在web inspector中尝试相同的JS,检查它是否是一个常规ISSI或计时问题(当您可能再次使用JS/WebKit时),我想到了这一点,并等待了5秒钟-仍然没有达成协议。悲伤:/但我能帮上忙真是太好了!实际上,我终于让
stringByEvaluatingJavaScriptFromString
工作了。好像出了什么事。我想说清楚,你的代码马上就可以工作了。对于任何希望将AppleWebKit版本号映射到Safari版本的人来说,这是非常有用的。