获取UIWebView的完整内容,包括!doctype和html标记

时间:2012-05-22 15:26:32

标签: objective-c ios uiwebview

我一直在探索[_webView stringByEvaluatingJavaScriptFromString:@"document.all[0].outerHTML"],但这会留下!doctype标记。

我正在尝试避免stringWithContentsOfURL:进行新的通话。

有什么方法可以获取UIWebView的完整源代码,包括!doctype和html标签吗?

1 个答案:

答案 0 :(得分:1)

无法在一次方法调用中获取Doctype和其余HTML代码。但是,您可以使用这样的Javascript构建Doctype(对于此Javascript解决方案,可归功于Rob W):

var node = document.doctype;
var html = "<!DOCTYPE "
         + node.name
         + (node.publicId ? ' PUBLIC "' + node.publicId + '"' : '')
         + (!node.publicId && node.systemId ? ' SYSTEM' : '') 
         + (node.systemId ? ' "' + node.systemId + '"' : '')
         + '>';

将此Javascript代码放入NSString并使用它调用stringByEvaluatingJavaScriptFromString:。这应该给你!Doctype。然后,您可以按照问题中的描述添加其余HTML。

但是我想建议第二种方法:首先使用stringWithContentsOfURL:将URL的内容加载到NSString中,然后使用loadHTMLString:baseURL:将NSString加载到UIWebView中

使用这种方法,您可以获得真正的完整HTML作为字符串(包括实际的!Doctype和html标记),并且您只使用1个请求。只需确保使用正确的baseURL,以便正确加载CSS和JS文件以及引用的图像。