Можно ли получить доступ к массиву, который находится за пределами iframe? - PullRequest
0 голосов
/ 29 марта 2020

Проблема заключается в следующем: внутри моей главной страницы (parent.html) у меня есть iframe (child.html) и блок скрипта. В этом блоке скрипта есть массив целых чисел и функция, которая добавляет элементы в список. В iframe есть новая функция, которая добавляет элемент в список основного файла (parent.html).

Я хотел бы знать, возможно ли для iframe (child.html) получить доступ эта функция найдена в parent.html. Пример:

родительский. html

<html>
    <head>
        <title>Parent</title>
        <script>
            var parentList = [0];
            var counter = 0;

            function addValue(){
                counter++;
                parentList.push(counter);
                console.log('parent', parentList);
            }
        </script>
    </head>
    <body>
        <button onclick="addValue()">Add Value (Parent)</button>
        <br />
        <iframe src="child.html" allowfullscreen></iframe>
    </body>
</html>

дочерний. html

<html>
    <head>
        <title>Child</title>
    </head>
    <body>
        <button onclick="addValueInternal()">Add Value Child</button>
        <script>
            var internalCount = 0;

            function addValueInternal() {
                internalCount++;
                parentList.push(internalCount);
                console.log('child', parentList);
            }
        </script>
    </body>
</html>

Ошибка :

child.html:12 Uncaught ReferenceError: parentList is not defined
    at addValueInternal (child.html:12)
    at HTMLButtonElement.onclick (child.html:6)

1 Ответ

1 голос
/ 29 марта 2020

Да. это возможно. На основе примера вызова функции, определенной в родительском элементе, из встроенного iframe .

Так что в вашем случае вам придется ссылаться на parent при доступе к вашему массиву.

function addValueInternal() {
  internalCount++;
  parent.parentList.push(internalCount); // here we access the reference
  console.log('child', parentList);
}

Имейте в виду, что впоследствии вы можете столкнуться с проблемами, касающимися политики перекрестного происхождения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...