質問: jQuery(3.3.1)のajaxで得たhtmlデータのhead内に対して操作をしたいです。 以下のようにscriptタグ内に書かれたjsを表示しようとしましたが、コンソールに何も表示されません。何が原因なのでしょうか? (もちろんですがドメインは一緒で他のディレクトリのページです) ``` $.ajax({ type: "GET", url: targetUrl, timeout: 1000, datatype: "html" }).then(function(data){ $(data).find('head').find('script').each(function(index, el) { console.log(el.text()); }); },function(){ //略 }); ``` 色々調べたのですが分からなかったので、質問させて頂きました。 ご回答の程、よろしくお願い致します。 質問しておいてアレですが、 ``` $(data).filter('script').text(); ``` で script 内のjsが取得できました。これでやりたいことができそうです。 ご回答頂いた皆様、ありがとうございました。
回答: jQuery関数では次のように説明されています。 > > When passing in complex HTML, some browsers may not generate a DOM that exactly replicates the HTML source provided. As mentioned, jQuery uses the browser's `.innerHTML` property to parse the passed HTML and insert it into the current document. During this process, some browsers filter out certain elements such as ``, ``, or `` elements. As a result, the elements inserted may not be representative of the original string passed. > > > `.innerHTML`を使用して解析を行うため、ブラウザーによっては``、``、``などのタグが省略されることがあるそうです。ですので、今回の用途には使えなさそうです。