48698


jQuery(3.3.1)のajaxで得たhtmlデータのhead内に対して操作をしたいです。  
以下のようにscriptタグ内に書かれたjsを表示しようとしましたが、コンソールに何も表示されません。何が原因なのでしょうか？  
（もちろんですがドメインは一緒で他のディレクトリのページです）

[code]

    $.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(){
        //略
    });
    
[/code]

色々調べたのですが分からなかったので、質問させて頂きました。  
ご回答の程、よろしくお願い致します。

質問しておいてアレですが、

[code]

    $(data).filter('script').text();
    
[/code]

で script 内のjsが取得できました。これでやりたいことができそうです。  
ご回答頂いた皆様、ありがとうございました。


CC BY-SA 4.0
2018-09-25T06:35:19.290
48694
2018-09-25T08:38:34.433
2018-09-25T08:08:59.857
30065
30065
question
javascript jquery
ajaxで取得したhtmlのhead内を操作したい


[jQuery関数](http://api.jquery.com/jquery/#jQuery2)では次のように説明されています。

> 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 `<html>`, `<title>`, or `<head>` elements. As a result, the
> elements inserted may not be representative of the original string passed.

`.innerHTML`を使用して解析を行うため、ブラウザーによっては`<html>`、`<title>`、`<head>`などのタグが省略されることがあるそうです。ですので、今回の用途には使えなさそうです。


CC BY-SA 4.0
2018-09-25T07:44:52.987
48696
2018-09-25T07:44:52.987
4236
48694
answer


すでに自己解決しているようですが、一応

`$.ajax` で取得したウェブページのデータ(文字列)を扱う場合は
[DOMParser](https://developer.mozilla.org/ja/docs/Web/API/DOMParser)
を利用する手段もあります。これを `$` でラップすれば jQuery API 群が使えるようになります。

[code]

    $.ajax({
        /* 中略 */
    }).then(function(data) {
        var parser = new DOMParser();
        var doc = parser.parseFromString(data, "text/html"); //=> HTMLDocument
        $(doc).find('head > script').each(function(index, el) {
            console.log(el.text());
        });
    })
    
[/code]


CC BY-SA 4.0
2018-09-25T08:38:34.433
48698
2018-09-25T08:38:34.433
2391
48694
answer