
No.3ベストアンサー
- 回答日時:
続き(body部以下)
<body>
<h2>Iframe Contents Text Get</h2>
<p>
<span style="font-weight:bold;">URL:</span><input type="text" id="url" style="width:70%" value="/index.htm">
<button onclick="frame_load();">ロード</button>
</p>
<hr>
<iframe id="target_frame" name="target_frame" src="/index.htm" width="640px" height="800px" style="float:left;"></iframe>
<button onclick="get_text();">テキスト抽出</button>
<button onclick="result_clear();">クリア</button>
<p style="text-align:center;">
<textarea id="result" cols="15" rows="30"></textarea>
</p>
</body>
</html>
※レイアウトが気にいらなきゃ適時修正してね
※外部サイトのHTMLの解析は、サーバープログラムが無いとだめよ。
No.2
- 回答日時:
IFRAMEにロードしたHTMLのテキストノードを抽出して、TEXTAREAに
書き出すサンプルです。これだけでは、あまり使い道が無いような...
※display:none;とかvisibility:hidden;のテキストも拾っているので、
もう一工夫かな。
サンプル(全角空白は半角空白になおして使いましょう)
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>Iframe Contents Text Get</title>
<script type="text/javascript">
<!--
function TextSearch(node){
this.node=node;
this.result=[];
this.texts=[];
(function(node,result){
for(var elm=node;elm;elm=elm.nextSibling){
if(elm.nodeType == 3){
result.push(elm.parentNode);
}else{
if(elm.hasChildNodes()) arguments.callee(elm.firstChild,result);
}
}
})(this.node,this.result);
this.text=function(){
this.texts.length=0;
for(var i=0;i<this.result.length;i++){
if(this.result[i].nodeName!="SCRIPT"){
var textelm=this.result[i].firstChild;
while(textelm.nodeValue==null){textelm=textelm.nextSibling;}
this.texts.push(textelm);
}
}
}
this.finded_elm=this.result;
this.text_elm=this.texts;
}
function get_text(){
var iframe=document.getElementById("target_frame");
var content=iframe.contentDocument.body;
var result_str="";
document.getElementById("result").value="";
var text_search=new TextSearch(content);
var target_length=text_search.finded_elm.length;
if(target_length>0){
text_search.text();
var elm=(text_search.text_elm.length==0)?text_search.finded_elm:text_search.text_elm;
for(var i=0;i<elm.length;i++){
result_str += elm[i].nodeValue.replace(/^[\s, ]+/gm,"");
}
document.getElementById("result").value = result_str;
}
}
function frame_load(){
var url=document.getElementById("url").value;
target_frame.location.href=url;
}
function result_clear(){
document.getElementById("result").value='';
}
// -->
</script>
</head>
body部へ続く
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
getElementsByNameで要素が取得...
-
チェックボックスの選択パター...
-
JavaScriptでiframeの内容を「...
-
「オブジェクトを指定してくだ...
-
ウィンドウのタイトルを変えたい
-
bodyタグのfocus
-
iframeの中から親ページをスム...
-
<a href="#" …>の意味を教えて...
-
フレームが入れ子状態です。フ...
-
<aタグで変数に文字を代入
-
javascriptでalertの文字列をコ...
-
マウスオーバー+クリカブルマッ...
-
毎回、ページ読み込み時に1回...
-
【javascript クロスブラウザ...
-
【Google Apps Script】「ライ...
-
メールフォームとかで確認画面...
-
Camera slideshowの使い方について
-
ブラウザの「戻る」ボタンを押...
-
HTMLソースからURLだけを抜き出...
-
JavaScriptからVBScriptの呼び...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
function の return 値を表示し...
-
JavaScriptでiframeの内容を「...
-
SCRIPT5007: 未定義または NULL...
-
getElementsByNameで要素が取得...
-
キーを押している間の時間を計...
-
複雑な再帰(?)に関して
-
乱数を一定時間毎に表示させた...
-
JavaScriptでのEnterキーとAlt+...
-
フォーカス移動抑止について
-
javascriptでtextareaの文字列...
-
iframe内に表示するページを5分...
-
ウィンドウのタイトルを変えたい
-
クリックすると別の文章を表示する
-
イメージ(画像)の上に重ねたテ...
-
onmouseoverのクラス指定
-
JavaScriptについての質問です。
-
JavaScript でキーを送る
-
bodyタグのfocus
-
出荷予定日を表示するJavaスク...
-
マウスクリックした地点のテキ...
おすすめ情報