#javascript #html #css #iframe
#javascript #HTML #css #iframe
Вопрос:
У меня есть страница, которая имеет структуру, подобную этой;
<body onLoad="LoadPage()">
<iframe src="pg1.html">
<p>Your browser does not support iframes.</p>
</iframe>
<iframe src="about:blank">
<p>Your browser does not support iframes.</p>
</iframe>
</body>
Теперь при загрузке тела я устанавливаю значение «src» для 2-го iframe.
Если я вызываю body onload, функция, похоже, вызывается дважды…Итак, есть ли какой-либо другой способ, с помощью которого я могу вызвать функцию для установки src..
<script type="text/javascript">
function LoadPage(){
var pdfVal = document.forms[0].pdf_val.value;
document.getElementById('ipad_pdf_link').href = pdfVal;
}
</script>
Комментарии:
1. показать
LoadPage()
и другие скрипты
Ответ №1:
Я не уверен, почему оно загружается дважды, но вы можете вместо того, чтобы делать это на onLoad
, использовать jQuery:
<script>
function loadPage() {
var pdfVal = $("name=[pdf_val]").val();
$('#ipad_pdf_link').attr("src", pdfVal);
}
$(function() { // called when the page finishes loading
loadPage();
});
</script>
jQuery намного надежнее справляется с различиями в браузерах, и я уверен, что избавит вас от множества головных болей в будущем.
Ссылка:
Ответ №2:
Вы могли бы поместить
<script type="text/javascript">
LoadPage();
</script>
В нижней части HTML, а не в событии onload, и оно все равно будет вызвано, когда страница завершит загрузку.
Комментарии:
1. Спасибо за это .. На самом деле есть 2 вещи … 1) Загрузка страницы главной страницы … и 2) загрузка страницы iframe.. Итак, я должен использовать одно и то же для обоих мест?
2. Почему это не очень хорошая практика? В любом случае я хочу, чтобы функция запускалась после того, как DOM будет готов..
3. Загрузка означает загрузку также всех файлов JS, поэтому иногда вам нужно сначала запустить код важных файлов js, а затем должен выполняться ваш код, поэтому лучше вызвать как $(function() {}
Ответ №3:
Загрузка дважды, скорее всего, связана с этим:http://msdn.microsoft.com/en-us/library/ie/hh180173(v=vs.85).aspx
У меня есть случай, когда IE9 дважды вызывает функцию init, когда она установлена с помощью <body onload="x()">
. У нас есть система, в которой наши старые asp-страницы запускаются в iframe, и их десятки. Все они используют один и тот же старый синтаксис. Первый вызов init выполнен правильно, но второй выполняется как самый верхний. Это в основном все портит, потому что в iframe window.top нет функций, которые должны быть, потому что это само окно iframe. В IE8, режиме IE8 в IE9, Chrome и Firefox это работает нормально.