#javascript #css #html #scripting
#javascript #css #HTML #сценарии
Вопрос:
Основываясь на условии JS, я хочу, чтобы произошло одно из двух действий;
- Либо для отображения фрейма на странице, ЛИБО
- Покажите ссылку «Показать pdf» на странице.. Показать pdf
Теперь, когда я знаю, как выполнить отображение / скрытие на основе условия JS, мой вопрос заключается в том, что в случае выполнения 2-го условия я хочу не только скрыть объект frame, НО и убедиться, что он также не загружен в фоновом режиме… Я думаю, что использование show / hide не помешает загрузке PDF в фоновом режиме.. Итак, мой вопрос в том, как я могу достичь этого с помощью Javascript?
********** Вот что я пытаюсь**********
if(isiPad)
{
$('#content').attr('src','ipad_frame.html');
}
else
{
$('#content').attr('src','xyz.pdf');
}
И в html у меня есть
<frame src="#" title="Content Frame" name="content" id="content" />
Будет ли это нормально работать? По некоторым причинам я только что протестировал его, и, хотя он включен в часть if / else, он не отображает соответствующий контент..
Ответ №1:
Почему бы не добавлять элементы динамически в скрипте к элементу контейнера? Что-то вроде (предполагая, что вы используете jQuery):
if(condition)
{
$('#container').html('<html for frame>');
}
else
{
$('#container').html('<html for pdf>');
}
Это гарантирует, что будет загружен только тот элемент, который вы хотите загрузить.
Комментарии:
1. упс .. и это то, что происходит, когда вы вводите код поздно ночью непосредственно в поля для ответов 😉
2. Разумно ли импортировать jQuery для чего-то настолько простого?
3. Короче говоря, конечно.. В противном случае просто используйте собственные функции элементов javascript
4. Спасибо за lot…No проблемы вообще с проблемами синтаксиса.. Также jQuery подходит для me..My единственный вопрос заключается в том, что когда мы говорим if ..else, одновременно может выполняться только одно условие .. но поскольку одно из них будет иметь ссылку «pdf» (<frame src=’xyz.pdf’), гарантирует ли этот подход, что pdf будет загружен только в том случае, если это условие выполнено, а не иначе…
5. @hmthr: PDF-файл будет загружен только после добавления элементов в DOM. Итак, нет, он не будет загружен, если условие не выполнено.
Ответ №2:
Вместо того, чтобы показывать / скрывать, вы могли бы использовать DOM для изменения содержимого страницы:
<div id="frameWillBeHere">
</div>
<script language="javascript">
var f = document.getElementById('frameWillBeHere');
if (whatever) {
f.innerHTML = '<iframe>pdf file</iframe>';
}
else {
f.innerHTML = 'something else';
}
</script>
Вы также можете заставить этот скрипт реагировать на событие, чтобы фрейм появлялся при необходимости. Необходимо проделать некоторую работу, чтобы фрейм, появляющийся на вашей странице, полностью не нарушал ваш макет.
Комментарии:
1. Спасибо большое.. Но опять же, вопрос в том, что пока установлен f.innerHTML, фактическое содержимое не отображается … Не уверен, нужно ли мне вызывать функцию для определенного события?
2. Просто добавлю, что в браузере IE возникла проблема, т.Е. работает следующий document.getElementById(‘content2’).contentWindow. location = ‘ google.com ‘; Но локальный вызов html не работает, т.е.document.getElementById(‘content2’).contentWindow. location = ‘ipad_frame.html ‘;