iFrame и Javascripts - PullRequest
       4

iFrame и Javascripts

1 голос
/ 24 января 2012

У меня есть следующая страница с iframes:

<!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>

Внутри reference.jsp, у меня есть следующий код:

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

Я проверял ранее сообщения StackOverflow об использовании Javascript в разных фреймахи обнаружил, что contentWindow добивается цели, но в этом случае я получаю только первое предупреждение - «test» и кадр с id = «reference» никогда не достигается.Я вижу следующую ошибку в Firebug:

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

Есть ли что-то, чего мне не хватает, похоже, это очень простой вариант использования.

Ответы [ 2 ]

2 голосов
/ 24 января 2012

Я думаю, что проблема в том, что ваш скрипт выполняется до загрузки фрейма ...

Вы можете сделать следующее, чтобы убедиться, что фрейм загружен перед выполнением скрипта:

<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>

Я добавил атрибут onload="load()" в кадре reference и обернул ваш скрипт в функцию load().Это приведет к выполнению кода после загрузки кадра reference.

0 голосов
/ 24 января 2012

Ваш тип документа переходный , который не поддерживает набор параметров попробуйте тег типа документа ниже

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...