2012-01-24 8 views
2

私は、アイフレームと次のページがあります。reference.jspインサイドのiFrameやジャバスクリプト

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1- 
transitional.dtd"> 
<html> 
<head> 
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> 
<script type="text/javascript"> 
    alert("test"); 
    elements = document.getElementById("reference").contentWindow.getElementLength(); 
    alert("test2"); 
</script> 
</head> 
<frameset cols="20%,*"> 
    <frameset rows="25%,*"> 
     <frame src="./groups.html" name="types"> 
     <frame src="./entities.jsp" name="entities"> 
    </frameset> 
    <frame src="./reference.jsp" name="reference" id="reference"> 
</frameset> 
</html> 

を、私は次のコードを持っている:

<html> 
<head> 
    <script type="text/javascript"> 
     function getElementLength(){ 
      alert("in reference"); 
      elements=document.getElementByClassName("link"); 
      alert(elements.length); 
     } 
    </script> 
</head><body>...</body></html> 

を私は、以前のフレームにわたってJavascriptを使用してについてStackOverflowの記事をチェックし、 contentWindowがトリックを行うことがわかりましたが、この場合、私は最初の警告( "test")しか得られず、id = "reference"のフレームには決して到達しません。 Firebugで次のようなエラーが表示されます。

document.getElementById("reference") is null 
elements = document.getElement...").contentWindow.getElementLength(); 

私は行方不明のものがありますか?これは非常に厳しい用途のようです。スクリプトが実行される前に、フレームを確認するために、次の操作を行うことができ

私は問題はフレームがロードされる前に、あなたのスクリプトが実行されていることだと思い

+1

注以下のドキュメントタイプのタグを試してみてくださいframset をサポートしていません移行です:これらはのiFrameではありません...ちょうどフレーム.... – ManseUK

答えて

3

が...ロードされます

<script type="text/javascript"> 
function load() { 
    alert("test"); 
    elements = document.getElementById("reference").contentWindow.getElementLength(); 
    alert("test2"); 
} 
</script> 

<frameset cols="20%,*"> 
    <frameset rows="25%,*"> 
     <frame src="./groups.html" name="types"> 
     <frame src="./entities.jsp" name="entities"> 
    </frameset> 
    <frame src="./reference.jsp" name="reference" id="reference" onload="load()"> 
</frameset> 

属性をフレームreferenceに追加し、スクリプトをload()関数でラップしました。これは、コードがreferenceフレームがロードされた後に実行されるようにします。

+1

私は完全に同意しますもう少し小さな問題は、reference.jspの 'elements = document.getElementByClassName(" link ");'命令を 'elements = document.getElementsByClassName(" link ");'(sを使って)に変更しなければならないということです。すべてのリンククラスを取得します。 – DEAD10CC

0

あなたのドキュメントタイプが

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">