2011-12-27 115 views
0

我在UIWebvView中使用此JavaScript来获取YouTube视频的URL。在iPhone上工作但不在iPad上的Javascript

getURL = [self.webView stringByEvaluatingJavaScriptFromString:@"function getURL() { 
    var player = document.getElementById('player'); 
    var video = player.getElementsByTagName('video')[0]; 
    return video.getAttribute('src'); 
    } 
    getURL();" 
]; 

它在iPhone上正常工作,但在ipad上失败并返回@“”。这两款设备都加载了m.youtube.com网站。有人能帮助我吗?

回答

0

iPad和iPhone有不同的HTTP头信息,特别是用户代理字符串。 YouTube有可能根据用户拥有的设备发送不同的javascript。

您可能会尝试覆盖请求中的“用户代理”HTTP标头。我认为这个堆栈溢出的答案可能适用于:Change user agent on UIWebView

如果不是,您可以尝试使用一组第三方类,如AISHTTPRequest来欺骗用户代理信息,以便在YouTube认为它的同时访问iPad的YouTube网址是一个iPhone。

+0

我已经在使用ASIHTTPRequest了,你能给我更多关于更改ASIHTTPRequest中用户代理的细节吗?谢谢 – JonasG 2011-12-29 00:07:41

+0

你的回答是对的,这些网站有不同的页眉信息。没有办法让iPad在iPad上工作。我必须使用完全不同的方法。 – JonasG 2012-01-09 23:03:54

+0

太糟糕了。对于最后一个问题没有回应,感到抱歉。我很确定你只是创建一个新的请求,然后设置用户代理。 “ASIHTTPRequest设置用户代理”的快速搜索结果显示了这个页面的最高结果:http://allseeing-i.com/ASIHTTPRequest/How-to-use看起来你只需要调用[request setUserAgent:@“ MyApp 1.0“],并将代理名称替换为iPhone的”MyApp 1.0“。那么你应该得到youtube的iPhone响应。你用什么方法?如果您在此处发布详细信息,其他人可能会从您如何解决问题中受益。 – Hivebrain 2012-01-10 20:23:29

相关问题