重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

あるサイトのHPでは
<div>
<p class="en">AAAAAAAAAAAAAAAAAAAAAAAAAAAA</p>
<p class="ja">ああああああああああああああああああ</p>
</div>
<div>
<p class="en">BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB</p>
<p class="ja">いいいいいいいいいいいいいいいいいいいい</p>
</div>
となっています。当然、クラス名がenのもjaのも表示されていますが、
class="en"の文章(AAAAAAAAAAAAAABBBBBBBBBBBBBB)だけ取り出したいのですが、
いい智恵はないでしょうか?

http://highfivecreate.com/blog/course/tips/817.h …
に挑戦していますが、これ自体、動きません。
jquery.xdomainajax.jsの一行目の<がおかしいとchrome君が言っています。

A 回答 (4件)

まったく個人的な思いとして、jQuery 関係はパスしたいです。



ajax とありますが非同期でもありません。
そして、document.write の完了を知る方法を知りません。
なのでベタに doc.close () の後で発火。(初めて使ったz)
他のURLを拾えるかは調べていません。

<!DOCTYPE html>
<meta charset="utf-8">
<title>IFRAME SCANNING</title>
<script src="http://code.jquery.com/jquery-1.8.2.min.js"></sc …
<script src="jquery.xdomainajax.js"></script>

<body>
<script>

function fuga () {
 var doc = this.contentDocument;
 var es = doc.getElementsByClassName ('en');
 var text = Array.prototype.map.call (es, getTextContent);
 
 alert (text.join ('\n'));
}


function getTextContent (e) {
 return e.textContent;
}


function hoge (url, cbFunc) {
 var iframe = document.createElement ('iframe');
 var html = $.ajax ({ url: url, async: false }).responseText;
 var doc;
 
 iframe.style.display = 'none';
 document.body.appendChild (iframe);
 
 doc = iframe.contentDocument;
 doc.open ();
 doc.write (html);
 doc.close ();
 cbFunc.call (iframe);
}

//----

hoge ('test.html', fuga);

</script>
    • good
    • 0
この回答へのお礼

ありがとうございました。
私の環境では動かなかったですが、やりかたが分かったので、ここからは自分の環境にあうように
いろいろやっているところです。
本当にありがとうございました。

お礼日時:2014/04/13 05:24

#1です。

ググったらだめな方法でした。ごめん。
同じところに、PHPとかでキャッシュしてくれるコードを書けばOK?

この回答への補足

とんでもないです。
alertをdocument.write (text.join ('<br>'));に変えれば、内部ドメイン化する一手間はかかりますが、目的は達成できていますのでありがたかったです。
ただ、PHPの環境はつくっていませんので、できましたら、jquery.xdomainajax.jsを使ったのを知りたいのですが...

補足日時:2014/04/10 14:27
    • good
    • 0

>外部HTML



を読み込むのはクライアント側ではいろいろ制限があります。
javascriptでは難しいかもしれません
    • good
    • 0

こんなのはどうですか?



<!DOCTYPE html>
<meta charset="utf-8">
<title>IFRAME SCANNING</title>
<body>
<script>

function fuga () {
 var doc = this.contentDocument;
 var es = doc.getElementsByClassName ('en');
 var text = Array.prototype.map.call (es, getTextContent);
 
 alert (text.join ('\n'));
}


function getTextContent (e) {
 return e.textContent;
}


function hoge (url, cbFunc) {
 var iframe = document.createElement ('iframe');
 
 iframe.src = url;
 iframe.style.display = 'none';
 iframe.addEventListener ('load', cbFunc.bind (iframe), false);
 
 document.body.appendChild (iframe);
 iframe = null;
}

//----

hoge ('test.html', fuga);


</script>
    • good
    • 0
この回答へのお礼

わざわざコードを記載していただきありがとうございました。
目的のHPを抜き出して、自分のPC上のwebserverの公開フォルダの中におき、教えていただいたコードを動かしましたら、ちゃんとコード名がenのだけが取り出されていました。ありがとうございました。

ただ、そのまま目的のHPのアドレスを入力するとダメでした。やはり難しいのでしょうか..

お礼日時:2014/04/10 13:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!