#javascript #jquery
#javascript #jquery
Вопрос:
У меня есть программа, которая будет динамически устанавливать iframe src для загрузки страниц. Мне нужно подключить обработчик событий для полностью загруженной страницы. Как я могу это сделать? Спасибо!
Ответ №1:
<script type="text/javascript">
function iframeDidLoad() {
alert('Done');
}
function newSite() {
var sites = ['http://getprismatic.com',
'http://gizmodo.com/',
'http://lifehacker.com/']
document.getElementById('myIframe').src = sites[Math.floor(Math.random() * sites.length)];
}
</script>
<input type="button" value="Change site" onClick="newSite()" />
<iframe id="myIframe" src="http://getprismatic.com/" onLoad="iframeDidLoad();"></iframe>
Пример в http://jsfiddle.net/MALuP /
Комментарии:
1. Ссылка в этом ответе теперь разорвана. Возможно, было бы полезно повторно загрузить это на jsfiddle.net , а затем опубликовать ссылку на это.
2. Хорошая идея. Я просто изменил его.
Ответ №2:
Попробуйте это:
top.document.getElementById('AppFrame').setAttribute("src",fullPath);
Комментарии:
1. Работает отлично! Рабочий пример, заключенный в ссылку: <a onClick=»top.document.getElementById(‘iframe_id’).setAttribute(‘src’,’ photosonthefly.com ‘ );» > Фотографии на лету</a> Для этого метода потребуется CSS-указатель, например <style>a:hover {курсор: указатель;}</style>
Ответ №3:
Попробуйте это…
function urlChange(url) {
var site = url '?toolbar=0amp;amp;navpanes=0amp;amp;scrollbar=0';
document.getElementById('iFrameName').src = site;
}
<a href="javascript:void(0);" onClick="urlChange('www.mypdf.com/test.pdf')">TEST </a>
Ответ №4:
Вы также должны учитывать, что в некоторых версиях Opera загрузка запускается несколько раз, и добавить несколько перехватов:
// fixing Opera 9.26, 10.00
if (doc.readyState amp;amp; doc.readyState != 'complete') {
// Opera fires load event multiple times
// Even when the DOM is not ready yet
// this fix should not affect other browsers
return;
}
// fixing Opera 9.64
if (doc.body amp;amp; doc.body.innerHTML == "false") {
// In Opera 9.64 event was fired second time
// when body.innerHTML changed from false
// to server response approx. after 1 sec
return;
}
Код заимствован из Ajax Upload
Комментарии:
1. Кроме того, если вы используете jQuery, вы можете привязать обработчик события загрузки для iframe
$('iframe').load(function (){ ...do smth... })
Ответ №5:
попробуйте этот код. затем div ‘FormID’ может задать изображение.
$('#formId').append('<iframe style="width: 100%;height: 500px" src="/document_path/name.jpg"'
'title="description"> </iframe> ');
Ответ №6:
Попробуйте это:
document.frames["myiframe"].onload = function(){
alert("Hello World");
}
Комментарии:
1. document.frames — недопустимый JavaScript. parent.frames все же может быть вариантом… но, похоже, лучший способ получить доступ к iframes в JavaScript действительно с помощью getElementById .