0

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

我试图避免stringWithContentsOfURL:,因为它会打一个新电话。

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

4

1 回答 1

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 的其余部分。

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

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

于 2012-05-22T18:14:16.380 回答