Перейти по ссылке внутри iFrame - PullRequest
15 голосов
/ 13 марта 2012

Внутри iframe (на page-A ) у меня есть простая страница ( page-B ), которая имеет несколько переходных ссылок (например, <a href="#my-id">jump link</a>) на разные разделыстраницы ( page-B ).Высота iframe предварительно установлена ​​на высоту page-B ;это требование.

По некоторым причинам переходные ссылки не работали на FF (я на Mac / FF 10.0.2);Тем не менее, он работал правильно на Safari и IE8.Это пример страницы .

Код страницы

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Jump Link Test on an iFrame</title>
</head>
<body>
<h1>Page that has an iFrame</h1>
<iframe width="100%" height="2000" src="./iframe.html" frameborder="0" scrolling="no">
</iframe>
</body>
</html>

Код iframe.html

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>iFrame Content</title>
<style type="text/css">
.box {
    margin: 0 0 5px;
    width: 400px;
    height: 400px;
}
#box1 {
    background-color: #f00;
}
#box2 {
    background-color: #f0f;
}
#box3 {
    background-color: #00f;
}
</style>
</head>
<body>
<ul>
    <li><a href="#box1">Box 1</a></li>
    <li><a href="#box2">Box 2</a></li>

    <li><a href="#box3">Box 3</a></li>
</ul>
<div>
    <div id="box1" class="box"></div>
    <div id="box2" class="box"></div>
    <div id="box3" class="box"></div>
</div>
</body>
</html>

Примечание. Если я установлю высоту iframe <<em> page-B , проблема будет решена.Однако, к сожалению, это не вариант, учитывая мою ситуацию, потому что у меня нет доступа к page-A .

Ответы [ 3 ]

18 голосов
/ 16 марта 2012

Это невозможно только с HTML.

Как вы можете прочитать в Firefox Номер сообщения об ошибке.638598 это уже давно упомянуто!Также многим людям не нравится это поведение, но Джонас Сикинг говорит в своем комментарии , что это никогда не изменится.Он видит в этом особенность, позволяющую firefox предотвращать эту потенциальную хакерскую функциональность.

если вы его не знаете прочитайте здесь, что он является техническим руководителем проект в Mozilla, а также редактор для и в W3C .

Другие люди пытались найтитакие решения, как Matthew , но этот пример не сработал в моем коротком тестовом примере с вашей структурой html. Некоторые другие говорят , что он должен работать с JavaScript и scrollTo() функцией.

Извините за то, что я говорю, что это ограничение только FireFox, но надеюсь, что вы счастливы бытьбезопасно знать об этой проблеме.

11 голосов
/ 20 марта 2012

Я уже столкнулся с этой проблемой.В моем случае я не смог использовать решение javascript, потому что мой iframe находился в другом домене, и у меня не было доступа к родительской странице.

Но есть обходной путь HTML.

Измените ссылкуиз этого:

<a href="#my-id">jump link</a>

Для этого:

<a target="_parent" href="http://parenturl.com/#my-id">jump link</a>

И создайте невидимый <div id="my-id"></div> на родительской странице и разместите его с помощью CSS.

0 голосов
/ 14 марта 2012

Ммм, просто мысль, вы сбросили поля для iframe? FF имеет тенденцию делать странные вещи, когда вы явно не указываете атрибуты полей.

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