2013-09-11 3 views
1

Я использую iframe test в моих test.html. Другой файл test2.html загружается в iframe test, мне нужно получить доступ к переменной, которая используется в test2.html. Есть ли способ получить доступ к этому в test.html.Как получить доступ к переменной в iframe, содержащей другой html?

Вот мои образцы

test.html

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <title></title> 
    <link href="Styles/redmond/jquery-ui-1.10.3.custom.css" rel="stylesheet" /> 
    <script src="Js/jquery-1.9.1.js" type="text/javascript"></script> 
    <script src="Js/jquery-ui-1.10.3.custom.js" type="text/javascript"></script> 
    <script type="text/javascript"> 
     $(document).ready(function(){ 
      //this code is doesn't work 
      var data1= document.getElementById('test').contentWindow.document.data; 
     }); 
    </script> 
    <style type="text/css"> 
     body,html{ 
      height:100%; 
      width:100%; 
      top:0; 
      left:0; 
      overflow:auto; 
     } 
     #test{ 
      height:250px; 
      width:250px; 
      border:1px solid gray; 
     } 
    </style> 
</head> 
<body> 
    <iframe id="test" src="test2.html"></iframe> 
</body> 
</html> 

test2.html

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <title></title> 
    <link href="Styles/redmond/jquery-ui-1.10.3.custom.css" rel="stylesheet" /> 
    <script src="Js/jquery-1.9.1.js" type="text/javascript"></script> 
    <script src="Js/jquery-ui-1.10.3.custom.js" type="text/javascript"></script> 
    <script type="text/javascript"> 
     var data = 'This data is retrived from test2.html'; 
     $(document).ready(function() { 
      $('#div')[0].textContent = data; 
     }); 
    </script> 
    <style type="text/css"> 
     body,html{ 
      height:100%; 
      width:100%; 
      top:0; 
      left:0; 
      overflow:auto; 
     } 
     #div{ 
      height:50px; 
      width:200px; 
      border:1px solid gray; 
      margin:10px; 
     } 
    </style> 
</head> 
<body> 
    <div id="div">Hello</div> 
</body> 
</html> 

Любые предложения следует иметь в виду ...!

+0

Вы пытались использовать contentWindow.data вместо contentWindow.document.data? –

+0

Это должно быть так. Кроме того, вам может потребоваться проверить, загружен ли iframe. Потому что это может быть случай, когда вы не получаете переменную. – putvande

ответ

1

Как уже упоминалось, вы должны получить переменную от contentWindow вместо contentWindow.document. Кроме того, вам может потребоваться дождаться загрузки iframe.

$(document).ready(function(){ 
    $('#test').on('load',function(){   
      var data1 = $('#test').get(0).contentWindow.data; 
      // Or plain JavaScript 
      // var data1 = document.getElementById('test').contentWindow.data; 
    }); 
}); 
Смежные вопросы