背景:
JavaScriptを使用してWebベースのモバイルアプリケーションを開発しています。HTMLレンダリングはSafariベースです。クロスドメインポリシーが無効になっているため、XmlHttpRequestsを使用して他のドメインを呼び出すことができます。アイデアは、外部HTMLを解析し、特定の要素のテキストコンテンツを取得することです。
以前は、テキストを1行ずつ解析して、必要な行を見つけていました。次に、その行のサブストリングであるタグのコンテンツを取得します。これは非常に面倒で、ターゲットのhtmlが変更されるたびに多くのメンテナンスが必要になります。
そこで、htmlテキストをDOMに解析して、cssまたはxpathクエリを実行したいと思います。
それはうまく機能します:
$('<div></div>').append(htmlBody).find('#theElementToFind').text()
唯一の問題は、ブラウザを使用してHTMLテキストをDOM要素にロードすると、すべての外部リソース(画像、jsファイルなど)をロードしようとすることです。深刻な問題はありませんが、避けたいと思います。
ここで質問:
ブラウザが外部リソースをロードせずにHTMLテキストをDOMに解析したり、jsスクリプトを実行したりするにはどうすればよいですか?
私が考えていたいくつかのアイデア:
- createDocument呼び出し(
document.implementation.createDocument()
)を使用して新しいドキュメントオブジェクトを作成しますが、外部リソースの読み込みをスキップするかどうかはわかりません。 - JSでサードパーティのDOMパーサーを使用する-私が試した唯一のパーサーは、エラーの処理が非常に悪かった
- iframeを使用して新しいドキュメントを作成し、相対パスを持つ外部リソースがコンソールでエラーをスローしないようにします