Я создаю простую веб-приложение, и я хочу иметь ссылки на навигацию, которые вместо тега <a>
изменяют SRC iframe. Когда это произойдет, есть ли способ быстро сделать старую страницу «скользящей вверх» и выйти из iframe, а затем загрузить новую страницу? Если возможно, я бы хотел использовать только HTML, Javascript и CSS.Изменение iframe src с эффектом?
ответ
Перед тем, как продолжить чтение, позвольте мне спросить вас: действительно ли вы нуждаетесь в IFrame? Загрузка веб-сайта на веб-сайт - это то, чего вы должны избегать, если нет альтернативы. Он медленный и обычно вызывает проблемы в браузерах.
Если вы используете это для навигации, возможно, вместо него можно будет использовать AJAX для загрузки нового контента? Или вы можете сначала загрузить все возможное содержимое и скрыть все из них, кроме одного.
Кстати, на случай, если у вас еще не много опыта (извиняюсь, если я под ложным впечатлением): Не бойтесь термина AJAX. Это просто функция Javascript, которая позволяет отправлять данные на сервер, а затем обрабатывать все, что он возвращает, после загрузки страницы. Он также известен как XML HTTP-запрос.
В любом случае структура Javascript, такая как jQuery (http://jquery.com) или прототип (http://prototypejs.org/), должна сделать вашу работу намного проще.
Если вы не видите альтернативы:
1) Ссылка, которая выполняет JS легко: <a href="#" onclick="return own_javascript_function();">
или <a href="javascript:my_function()">
, например.
2) Пусть ваша функция создаст новый iframe с новым контентом (var newframe = new HTMLIFrameElement()
, затем установите src и т. Д.) И вставьте его ниже предыдущего iframe. Дайте ему более низкий z-индекс, чтобы скрыть его ниже другого.
3) Слайд iframe out: используйте контейнер div с position:relative
, в который вы помещаете iframe с position:absolute
. Пусть javascript_function()
использует таймер для изменения css-свойства iframe top
от 0 до -500 (или любой другой высоты, которую имеет ваш iframe). Это особенно удобно для jQuery. Как только это закончится, удалите старый iframe и установите z-index нового iframe на что-то вроде 1 (чтобы избежать необходимости иметь более низкие и более низкие z-индексы).
Помните, что вы можете сделать то же самое с <div>
, вместо которого вы загружаете новый контент с помощью ajax; до тех пор, пока вы не загружаетесь из внешних доменов.
OK. Это просто для личного использования, поэтому мне не очень-то нравится кросс-совместимость, но идея load-all-and-hide-all-but-one кажется, что она будет простой. Благодаря! – tkbx
На ум приходят два варианта.
Если вы не используете jQuery, я предлагаю вам изучить его.
1) Используйте маску. Когда пользователь нажимает на ссылку, маска будет затухать над содержимым страницы (позиция: absolute; top: 0; left: 0; width: 100%; height: $ windowHeight; color: # {mask-color}). После того, как произойдет постепенное затухание, перезагрузите iframe новым содержимым. Затем вытрите маску.
ПРИМЕЧАНИЕ: (заменяющие FadeIn/FADEOUT с slideUp/slideDown для эффекта скольжения, см JQuery эффекты: http://api.jquery.com/category/effects/)
Fadeout:
$('#elemendId').fadeOut();
FadeIn:
$('#elemendId').fadeOut();
По умолчанию время замирания это 500, я думаю, поэтому вам нужно будет установить тайм-аут для кода, который загружает страницу
setTimeout(function() { ... load new iframe ... }, 500)
2) Поверните iFrame и выполните запрос AJAX для содержимого. что-то вроде
$.post('path/to/file.html', function(data) {
$('#destination-div').html(data)
});
Путь проще, и вы, вероятно, не столкнетесь с таким количеством вопросов.
EDIT: Я на самом деле не уверен, что если метод # 1 будет работать ... Я забыл, если вы можете положить маску поверх фрейма
- 1. Изменение SRC IFrame внутри IFrame
- 2. Изменение атрибута src IFrame
- 3. Изменение iframe src с Javascript
- 4. Изменение src iframe
- 5. Динамическое изменение содержимого src iframe
- 6. Изменение iframe src с JavaScript не работает
- 7. Изменение атрибута iframe src с параметром
- 8. Загрузить iframe с эффектом Fx.Slide
- 9. JavaScript: изменение iFrame src из Array
- 10. Изменение iframe SRC через окно выбора Опции
- 11. Iframe SRC Значение Изменение Не Освежающий Iframe в IE6
- 12. Изменение iframe src через выпадающее меню не загружает новый iframe
- 13. Изменение src с помощью кнопки
- 14. Загрузка и изменение iFrame 'src' с другой страницы
- 15. Изменение iframe youtube src с jquery - Ошибка IE8
- 16. Изменение iframe src с помощью javascript/jquery без настройки протокола
- 17. Jquery OnMouseOver изменение IMG атр с эффектом
- 18. getElementByID ("") с онлайн-Src IFRAME
- 19. Обнаружение изменения iframe src с помощью jquery
- 20. Изменение src с jquery
- 21. Как изменить src iframe на встроенный src в iframe?
- 22. Iframe src cross domain
- 23. iFrame src change event
- 24. iframe dynamic src
- 25. Шифрование Src Iframe
- 26. Как изменить iframe src
- 27. Как изменить iframe src?
- 28. Изменение видео src при щелчке
- 29. Ошибка атрибута iframe "src"
- 30. Как скрыть iframe src
Существует аналогичный вопрос (выцветание в andout): http://stackoverflow.com/questions/867272 – nalply