2016-03-26 2 views
0

Я хочу получить доступ к переменной в iframe из parent index.html.Доступ к переменной iframe from parent - undefined

index.html:

<!doctype html> 
<html lang="en-us"> 
    <head> 
    <title>Test</title> 
    </head> 
    <body> 
    <p>Test</p> 
    <div> 
    <iframe name="myIframe" id="test1" src="index2.html" width="100px" height="100px"></iframe> 
    </div> 
    <div> 
    <script type="text/javascript"> 
     var clickParent = document.getElementById("test1").contentDocument.clicks; 
     function onClickP() { 
      console.log("click on parent: " + clickParent); 
     }; 
    </script> 
    <button type="button" onClick="onClickP()">Click Parent Button</button> 
    </div> 
    </body> 
</html> 

Функция Iframe index2.html:

<!doctype html> 
<html> 
<head> 
    <title>Clicks</title> 
</head> 

<body> 
    <script type="text/javascript"> 
    var clicks = 0; 
    function onClick() { 
     clicks += 1; 
     console.log("click counts: " + clicks) 
    }; 
    </script> 
    <button type="button" onClick="onClick()">Click Child Button</button> 
</body> 
</html> 

В консоли, переменная clickParent "не определен". Как исправить это и сделать переменную clickParent = клики?

Этот вопрос не является дубликатом Sharing global javascript variable of a page with an iframe within that page, потому что это противоположность. Я хочу получить доступ к переменной iframe от родителя, а не к переменной родителя от дочернего. Мой вопрос, переменная, которую родительский доступ из iframe является «неопределенной».

Любые ответы будут оценены. Спасибо.

+0

[Это] (http://stackoverflow.com/questions/1451208/access-iframe-elements-in-javascript) может помочь. – Hang

+0

Возможный дубликат [Обмен глобальной переменной javascript страницы с iframe внутри этой страницы] (http://stackoverflow.com/questions/7647042/sharing-global-javascript-variable-of-a-page-with-an- iframe-in-that-page) – Dexter

+0

@ Ханг, спасибо за ссылку. Я попытался изменить var clickParent = window.frames ['test1']. Document.getElementById ('clicks'). Value; но он по-прежнему «неопределен». –

ответ

1

Возможно дубликат this.

Объявлять глобальные переменные в родительском и устанавливать их в документе iframe с использованием parent.var_name.

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

child_iframe = document.getElementById("iframe_id").contentWindow; 
alert(child_iframe.var_name); 
+0

Большое спасибо за ответ, а также за ссылку. Я попробовал ваше предложение, но переменная (child_iframe.clicks) у родителя по-прежнему «не определена». –

+0

Ваш родительский документ и ваш документ iframe хранятся в одном домене? – Dexter

+0

Да, Декстер. Я нашел ответ. Мне нужно сначала определить переменную parentClick перед загрузкой функции, например parentClick = 0. Тогда все работает как шарм. Спасибо, Декстер и Хэнг. –

Смежные вопросы