アプリ版:「スタンプのみでお礼する」機能のリリースについて

javascriptでブラウザに表示されている文字列を取得したい
宜しくお願いします。
javascriptを使って、現在表示されているブラウザの文字列を取得する方法はありますか?
ソースから取得したり、出来そうな気がするのですが、検索しても方法が見つかりませんでした。
もしくは、ブラウザのセキュリティで出来ないのでしょうか?

A 回答 (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の解析は、サーバープログラムが無いとだめよ。
    • good
    • 0

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部へ続く
    • good
    • 0

「現在表示されているブラウザの文字列」


の意味ですが、それは画像とかに乗っている文字は除いて、改行とか回り込みとか
のレイアウトも無視して、スタイル属性とかで、表示を抑止している部分は除いて、
とにかくテキストノードの文字列を表示するという事でしょうか?

この回答への補足

ありがとうございます。
その通りです。タグもスタイルシートも必要なく、ただ、画面に表示されている文字列を取得できればと考えております。

補足日時:2010/06/23 14:52
    • good
    • 0

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