我一直在探索[_webView stringByEvaluatingJavaScriptFromString:@"document.all[0].outerHTML"]
,但这留下了 !doctype 标签。
我试图避免stringWithContentsOfURL:
,因为它会打一个新电话。
有什么方法可以获取 UIWebView 的完整源代码,包括 !doctype 和 html 标签?
我一直在探索[_webView stringByEvaluatingJavaScriptFromString:@"document.all[0].outerHTML"]
,但这留下了 !doctype 标签。
我试图避免stringWithContentsOfURL:
,因为它会打一个新电话。
有什么方法可以获取 UIWebView 的完整源代码,包括 !doctype 和 html 标签?
没有办法在一个方法调用中获取 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 的其余部分。
但是我想建议第二种方法:首先使用将 URL 的内容加载到 NSString 中stringWithContentsOfURL:
,然后使用将 NSString 加载到 UIWebView 中loadHTMLString:baseURL:
通过这种方法,您可以获得真正的完整 HTML 作为字符串(包括实际的 !Doctype 和 html 标签),并且您只使用 1 个请求。只需确保使用正确的 baseURL,以便正确加载 CSS 和 JS 文件以及引用的图像。