Как получить доступ к iframe history.length - PullRequest
1 голос
/ 09 декабря 2011

Я пытаюсь понять историю iframe.Я создал для страниц A и B на локальном сервере.Используя iframe, я сначала загружаю страницу A, а затем динамически изменяю iframe src на страницу B. Должно ли это означать history.length = 2 как посещение двух разных URL?Это происходит при попытке без фреймов.Однако, используя iframes, я получаю только возвращаемое значение 1?

<body>
<div>
    <iframe src='/pageA.php' id='myframe' onload='checkHistory()' ></iframe>
</div>
</body>
</html>
<script language="javascript" type="text/javascript" >
    function checkHistory() 
    {
            document.getElementById('myframe').src='/pageB.php';
            alert("Number of URLs in history list: " + history.length);
    }
</script>

Правильно ли я получаю доступ к значению history.lenght для iframe или к iframe нужно обращаться как document.getElementById('myframe').history.length вместообщее history.length свойство?

Это озадачило меня.Я пытался сохранить значение history.length перед открытием страницы B и сравнить значения, но все равно не повезло.Должен ли быть способ, чтобы iframes сохраняли историю посещенных страниц так же, как это делает окно вкладки браузера?

1 Ответ

0 голосов
/ 10 декабря 2011

Каждый iframe существует как отдельная сущность: окно и документ по-своему.История iframe не связана с историей родителя;страницы, загруженные в iframe, не учитываются в истории родителя.Вы можете получить доступ к собственной истории iframe через:

document.getElementById("myframe").contentWindow.history.length

(предполагается, что ваш iframe загружен из того же домена, что и родительский, как показывает ваш пример.)

...