сохраняется ли localStorage или sessionStorage на открытой вкладке, если сохраненные данные поступают из iframe

Если я загружу iFrame в дочерний элемент вкладки, в которой находится пользователь, для использования пользователем в качестве средства выбора чего-либо из внешнего местоположения, и мне нужно будет сохранить эти данные из выбора с использованием локальных методов или методов хранения сеанса. Я смогу получить доступ к этим данным, как только закрою iFrame, чтобы продолжить? Или даже вообще в этом отношении?

Если нет, то есть ли еще чистый способ связи дочернего окна с родителем?


person chris    schedule 29.10.2015    source источник
comment
Вы можете сделать это (обычно), только если iframe находится в том же домене, что и страница, которой требуется доступ к некоторым данным внутри нее. Это может прояснить вашу ситуацию stackoverflow.com/a/3381926/4619012   -  person Steve Padmore    schedule 30.10.2015
comment
основная часть домена такая же, однако это поддомен домена. Итак, это подводит меня к тому, почему я изначально спросил, я должен был упомянуть об этом в исходном контексте.   -  person chris    schedule 30.10.2015
comment
Если оба находятся в одном домене, вы можете передать выбранные данные в родительское окно/вкладку, или использовать ajax для отправки данных на сервер, или сохранить данные в локальном хранилище (доступно, потому что местоположение содержимого iframe находится в тот же домен, что и родительский). Вы пробовали что-то, что не работает, или вы просто спрашиваете, возможно ли это?   -  person Steve Padmore    schedule 30.10.2015


Ответы (1)


Ниже приведен базовый пример использования localStorage между родительским окном и iFrame.

Для демонстрации введите значение в текстовое поле главной страницы и нажмите «Установить данные». Это установит значение в localStorage. Нажмите «Читать данные», чтобы вывести значение в div.

Затем введите другое значение в текстовое поле iFrame и нажмите «Установить данные».

Наконец, снова нажмите «Читать данные», и вы увидите набор значений из iFrame, отображаемый в div главной страницы.

основной.html:

     <div id="divOne">
        <label>Enter a Value: </label><input id="txtOne" />
        <input type="button" id="btnOne" value="Set Data" onclick="btn1Click(this);" />
        <input type="button" id="btnTwo" value="Read Data" onclick="btn2Click(this);" />
    </div>
    <div id="divTwo"></div>
    <iframe id="ifOne" src="iframe.html"></iframe>

    <script type="text/javascript">
        var div2 = document.getElementById('divTwo');
        var btn1 = document.getElementById('btnOne');
        var btn2 = document.getElementById('btnTwo');
        var input1 = document.getElementById('txtOne');

        function btn1Click(e)
        {
            localStorage.dataItem = input1.value;
        }

        function btn2Click(e) {
            div2.innerHTML = localStorage.dataItem;
        }
    </script>

iframe.html:

    <div>
        <label>Enter a different Value: </label><input id="txtOne" />
        <input type="button" id="btnOne" value="Set Data" onclick="btn1Click(this);" />
    </div>

    <script type="text/javascript">
        var btn1 = document.getElementById('btnOne');
        var input1 = document.getElementById('txtOne');

        function btn1Click(e)
        {
            localStorage.dataItem = input1.value;
        }
    </script>
person Steve Padmore    schedule 30.10.2015