0

私は調査してきました[_webView stringByEvaluatingJavaScriptFromString:@"document.all[0].outerHTML"]が、これは !doctype タグを残します。

stringWithContentsOfURL:新しい呼び出しを行うので、避けようとしています。

!doctype と html タグを含む UIWebView の完全なソースを取得する方法はありますか?

4

1 に答える 1

1

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 を使用していることを確認してください。

于 2012-05-22T18:14:16.380 に答える