CGI-BBS > JAVA/JavaScript > JavaScript > 他ウィンドウにあるリンクを読み取ることができない。


カレッヂ
カレッヂ


質問者 Nao F.  投稿日 2005/5/23(月) 12:57:38
次のような操作を行おうとしています。
1. 指定したURLを別ウィンドウで開く。
2. 開いたページに設定されているリンクを読み取る。
3. 読み取ったリンクを、もう1つ別のウィンドウを開いてそこに表示する。

このために作成した関数が次の通りです。


function GoLinks () {

  var srcwin = window.open('リンクを読み取りたいページのURL','srcwindow','');

  var msg = "リンクの一覧:<br>";

  for (i=0; i<srcwin.document.links.length; i++){
    msg = msg + srcwin.document.links[i] + "<br>";
  }

  var win1 = window.open('','newwin1','');
  win1.document.write(msg);

}


これを実行すると、srcwindow ウィンドウは開くのですが、その後 newwin1 ウィンドウが開きません。

ちなみに、for 文で自画面(このスクリプトが記入されているHTMLファイル)のリンクを読み取るようにすると
(つまり、for 文内の「srcwin.」の文字をすべて削除しておくと)
両ウィンドウとも正常に開き、予想通りの内容が表示されます。

上のスクリプトのような links プロパティの使い方はできないものなのでしょうか。
よろしくお願いいたします。

【習熟度】(未選択)

回答者 こう  [削除]  投稿日 2005/6/10(金) 00:19:16
ページのキャッシュの有無やページが開くタイミングによってリンクを表示するかどうかが決まるようです。
以下のソースのように一度開いてから実行する形にすれば、ほぼ間違いなく表示できるかと思われます。


<!-- 以下、ソース本文です //-->

<html>

<head>
<title>JavaScriptテスト</title>

<script language="javascript">
<!--

var msg = "リンクの一覧:<br>";

function GoLinks () {

  window.open('./test3.htm','srcwin','');
  var srcwin = window.open('./test3.htm','srcwin','');

  if(srcwin.document.links.length != 0){

  for (i=0; i<srcwin.document.links.length; i++){
    msg = msg + srcwin.document.links[i] + "<br>";
  }

  setTimeout('LinkCount()',1000);

  }else{

  msg = msg + "このページにリンクは存在しません。<br><br><br><br>";
  setTimeout('LinkCount()',1000);

 }

}

function LinkCount(){

  var win1 = window.open('','newwin1','');
  win1.document.write(msg);

}

//-->
</script>

</head>
<body>

<form>
<input type="button" value="LinkCount" onClick="GoLinks()">
</form>
<br>
<a href="#" onClick="GoLinks()">LinkCount</a>

</body>
</html>
質問者 Nao F.  [削除]  投稿日 2005/6/18(土) 14:59:52
同じディレクトリ系統内の(相対パス表示ができる)ファイルだとこれでうまくいくようなのですが、
まったくよそのURL('http://www.yahoo.co.jp/index.html' とか)だとうまくいかないです。

こういう使い方はできないものなのでしょうか?
回答者 こう  [削除]  投稿日 2005/6/25(土) 02:13:50
JavaScriptでは自身のファイル以外を読んだり書き込んだりできないようなので、
恐らくこの方法ではリンクを読み取ることはできないと思われます。(色々試しました)

他に方法がないか現在も検証していますが、うまくいかないです。

また何かわかり次第、書き込みます。

返信(回答)する

 


Web裏技