私は調査してきました[_webView stringByEvaluatingJavaScriptFromString:@"document.all[0].outerHTML"]
が、これは !doctype タグを残します。
stringWithContentsOfURL:
新しい呼び出しを行うので、避けようとしています。
!doctype と html タグを含む UIWebView の完全なソースを取得する方法はありますか?
私は調査してきました[_webView stringByEvaluatingJavaScriptFromString:@"document.all[0].outerHTML"]
が、これは !doctype タグを残します。
stringWithContentsOfURL:
新しい呼び出しを行うので、避けようとしています。
!doctype と html タグを含む UIWebView の完全なソースを取得する方法はありますか?
Doctype と残りの HTML コードを 1 回のメソッド呼び出しで取得する方法はありません。ただし、次のように 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 を追加できます。
ただし、2 番目のアプローチを提案したいと思います: 最初に URL のコンテンツをstringWithContentsOfURL:
NSString にロードし、次に NSString を UIWebView にロードします。loadHTMLString:baseURL:
このアプローチでは、実際の完全な HTML を文字列 (実際の !Doctype および html タグを含む) として取得し、1 つの要求のみを使用します。CSS および JS ファイルと参照イメージが正しくロードされるように、正しい baseURL を使用していることを確認してください。