2017-03-09 1 views
0

リモートサイトから結果をスクラップするChrome拡張機能を開発しています。私はfetchを使用してページのHTML文字列を正常に取得しましたが、今は単一のノードを照会する必要があります。JavaScriptでネットワーク操作を呼び出さずにHTML文字列を解析する

私は、次の2つのアプローチ(与えられたhtml文字列、およびquery文字列)試してみた:どちらの場合も

  1. let node = document.createRange().createContextualFragment(html).querySelector(query);

  2. let mock = document.createElement('div'); mock.innerHTML = html; let node = mock.querySelector(query);

を、私が手必要なテキストを適切に解析できます。
しかし、私は、ページの資産(スクリプト、画像、svgなど)が読み込もうとするコンソールでネットワークエラーが大量に発生し、拡張機能のポリシーによってブロックされています。

私の質問は、ネットワーク操作をトリガーせずに、HTML文字列を解析するか、必要な要素を取得するにはどうすればいいですか?可能であれば、jQueryを使わずに、このバニラを保ちたいと思います。

+0

はい!それは動作します!ありがとう@wOxxOm!それを答えとして追加して、正しいとマークすることができます。 –

答えて

3

安全DOMParser APIはクロム30、FF 12、IE 10以降およびその他の近代的なブラウザでHTMLを解析することができます。また、SVGを解析することができます

var doc = new DOMParser().parseFromString(html, 'text/html'); 
var element = doc.querySelector('a.foo-bar'); 

、XMLを使用すると、対応するMIME type parameterを指定した場合。

関連する問題