Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Передача переменной из фрейма (https://javascript.ru/forum/misc/71052-peredacha-peremennojj-iz-frejjma.html)

Sonya 22.10.2017 23:19

Передача переменной из фрейма
 
Здравствуйте! Искала в интернете, так и понятно-рабочий код не нашла. Как значение переменной из фрейма передать на страницу родителя в скрипт. Например, переменную var a=1 (переменная в фрейме), передать в скрипт на странице родителя, и как её на последней принять по условию, если а=1, то будет это, если иначе, то другое. Помогите, пожалуйста.

Rasy 23.10.2017 00:07

невозможно

ruslan_mart 23.10.2017 04:01

Sonya, объявить функцию в родителе и вызывать её с нужным параметром.

Родитель:
function myFunc(value) {
   if(value === 1) {
       console.log(true);
   }
}


IFrame:
var a = 1;

//...

parent.myFunc(a);

Sonya 23.10.2017 07:36

ruslan_mart, спасибо, то что нужно!

Rasy 23.10.2017 13:21

ruslan_mart,
Нечаянно впулил минус. Много код пишу...:)
А разве политика безопасности не заблочит такое общение ифреймов.

Dilettante_Pro 23.10.2017 13:44

Rasy, не блочит
<script>
 function myFunc(value) {
   if(value === 1) {
       console.log(true);
   }
}
</script>
<iframe id = 'ifr'>

</iframe>
<script>
  ifr.contentWindow.document.write('\<script\>var a = 1; parent.myFunc(a);\</script\>');

</script>

Rasy 23.10.2017 14:22

Dilettante_Pro,
Хорошо, а если подключать страницу в iframe, где будет скрипт вызова функции.

ruslan_mart 23.10.2017 14:56

Цитата:

Сообщение от Rasy
ruslan_mart,
Нечаянно впулил минус. Много код пишу...

Бывает-бывает :victory:

Цитата:

Сообщение от Rasy
А разве политика безопасности не заблочит такое общение ифреймов.

Заблочит только в том случае, если домены разные. В случае с разными доменами - можно общаться через postMessage.

Родитель:
window.addEventListener('message', function(event) {
    var a = event.data;

    if(a === 1) {
        console.log(true);
    }
});



IFrame:
var a = 1;

//...

parent.postMessage(a, '*');

Dilettante_Pro 23.10.2017 15:34

Rasy,
Цитата:

Сообщение от Rasy
где будет скрипт вызова функции

В каком смысле? Где размещать?
В скрипте iframe где-то после того, как нужная переменная получает/изменяет значение.

Кроссдоменно работать не будет - значит, своя страница для iframe - писать в ее скрипт то, что нужно,

Rasy 23.10.2017 18:38

;)


Часовой пояс GMT +3, время: 02:39.