Полезная информация

Хотите узнать больше о расширениях? Посмотрите ролики, рассказывающие о работе с расширениями Firefox.

№111-02-2008 11:14:21

chikanok
Участник
 
Группа: Members
Зарегистрирован: 06-02-2008
Сообщений: 18
UA: Opera 9.2

iframe

Привет.
Хочу довавить к текущей странице код "<iframe src=mypage.ru></iframe>".
Все делается в плагине CustomButtons.

Выделить код

Код:

var fr=document.createElement('iframe');
fr.setAttribute('src','http://ya.ru');
window._content.document.body.appendChild(fr);

Такой код делает редирект всей страницы на ya.ru.
Скажите как сделать,что б внизу страницы добавился мой блок?

Добавлено Mon Feb 11 11:42:54 2008 :
Редирект происходит из-за скрипта на странице ya.ru.
Если сделать src="mypage.ru" то фрейм подружается,но не отображается,скажите как сделать чтоб его видно было?

Отсутствует

 

№211-02-2008 13:09:10

chikanok
Участник
 
Группа: Members
Зарегистрирован: 06-02-2008
Сообщений: 18
UA: Opera 9.2

Re: iframe

Если написать так

Выделить код

Код:

var fr=document.createElement('iframe');
fr.setAttribute('src','http://ya.ru');
window._content.document.body.appendChild(fr);

то во фрейм грузятся данные,но он не отображается.
Если написать так

Выделить код

Код:

var fr=document.createElement('IFRAME');
fr.setAttribute('src','http://ya.ru');
window._content.document.body.appendChild(fr);

то фрейм отображается,но данные не загружает.
Скажите как сделать чтоб загружал данные и отображался.

Отсутствует

 

№311-02-2008 14:59:48

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 2.0
Веб-сайт

Re: iframe

Выделить код

Код:

var doc = getBrowser (). contentDocument;
var fr = doc.createElement('iframe');
fr. setAttribute ('src','http://ya.ru');
doc. body. appendChild (fr);

Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№411-02-2008 14:59:53

homo_nudus
Участник
 
Группа: Extensions
Зарегистрирован: 19-02-2007
Сообщений: 193
UA: Minefield 3.0

Re: iframe

Скрипт на странице не позволит запихнуть её во фрейм: при обнаружении любых фреймов скрипт перегружает всю страницу (поэтому предыдущий совет тоже не работает, как нужно). Можно сделать на Аяксе, но для начала несколько соображений о старом коде.

Во-первых, объект window._content устарел - лучше писать window.content (см. здесь)

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

В третьих, может быть будет логичнее сначала вставить элемент, потом грузить страницу.

Далее - у iframe есть свойство src (см. здесь), поэтому проще обратиться к нему напрямую.

Поэтому, если Вы будете делать такой код для другой странички, которая не принуждает к редиректу, то лучше писать так:

Выделить код

Код:

var fr1=window.content.document.createElement('iframe');
window.content.document.body.appendChild(fr1);
fr1.src = 'http://ya.ru';

Теперь вариант на Аяксе, не очень красивый, но, кажется, работает:

Выделить код

Код:

var doc = window.content.document;
var body = doc.body;
var container = doc.createElement("div");
container.setAttribute("style", "border:1px solid black;margin:10px;width:50%;height:200px;overflow:auto;");
body.insertBefore(container, body.firstChild);
var req = new XMLHttpRequest();
req.open("GET", "http://ya.ru", true);
req.onload = function() {
	container.innerHTML = this.responseText;
	var style = container.getElementsByTagName("style")[0];
	while (style) {
		style.parentNode.removeChild(style);
		style = container.getElementsByTagName("style")[0];
	}
	container.getElementsByTagName("form")[0].target = "_blank";
	container.getElementsByTagName("form")[0].getElementsByTagName("input")[0].focus();
}
req.onerror = function() {
	body.removeChild(container);
}
req.send(null);

Что нужно изменить во внешнем виде и поведении, подправьте сами — конечно, у меня вышел очень субъективный вариант.

Отредактировано homo_nudus (11-02-2008 15:03:46)

Отсутствует

 

№511-02-2008 15:16:31

cerberus
Обезьяна с гранатой
 
Группа: Members
Зарегистрирован: 22-09-2006
Сообщений: 200
UA: Firefox 3.0

Re: iframe

homo_nudus  пишет
Выделить код

Код:

var fr1=window.content.document.createElement('iframe');
window.content.document.body.appendChild(fr1);
fr1.src = 'http://ya.ru';

Смешно говорить, но у меня когда- то идентичный код (где в качестве тестовой странички был http://ya.ru) перегружал полностью страницу и редиректил на яндекс, притом что с http://google.com было всё нормально


"Software is like SEX - it's better when it's FREE" (C) Linus Torvalds

Отсутствует

 

№611-02-2008 15:27:36

homo_nudus
Участник
 
Группа: Extensions
Зарегистрирован: 19-02-2007
Сообщений: 193
UA: Minefield 3.0

Re: iframe

cerberus пишет

Смешно говорить, но у меня когда- то идентичный код (где в качестве тестовой странички был http://ya.ru) перегружал полностью страницу и редиректил на яндекс, притом что с http://google.com было всё нормально

Ну да, это я просто в качестве примера поставил. В коде страницы http://ya.ru можно посмотреть (правда, весь скрипт одной строкой будет):

Выделить код

Код:

body onload="
    if (self.parent.frames.length!=0)
        self.parent.location=document.location;
    else {
        var t=document.forms[0].text;
        try {
            t.type='search'
        } catch(e){};
        t.focus();
    }
"

Отредактировано homo_nudus (11-02-2008 15:29:13)

Отсутствует

 

№711-02-2008 22:55:40

Shutnik
Участник
 
Группа: Extensions
Зарегистрирован: 12-11-2005
Сообщений: 3785
UA: Firefox 2.0

Re: iframe

бился с проверкой на загрузку контента/нод, но всё решилось гораздо проще:

Выделить код

Код:

window.frames.length = 0;
var fr = document.createElement('iframe');
fr.setAttribute('src','ya.ru.htm');
document.body.appendChild(fr);

работает :tongue2:

Отсутствует

 

№811-02-2008 23:43:54

homo_nudus
Участник
 
Группа: Extensions
Зарегистрирован: 19-02-2007
Сообщений: 193
UA: Minefield 3.0

Re: iframe

Shutnik пишет

бился с проверкой на загрузку контента/нод, но всё решилось гораздо проще:

Выделить код

Код:

window.frames.length = 0;
var fr = document.createElement('iframe');
fr.setAttribute('src','ya.ru.htm');
document.body.appendChild(fr);

работает :tongue2:

Это подло! :) Бедный скрипт :)

Отредактировано homo_nudus (11-02-2008 23:44:29)

Отсутствует

 

№912-02-2008 13:13:08

chikanok
Участник
 
Группа: Members
Зарегистрирован: 06-02-2008
Сообщений: 18
UA: Opera 9.2

Re: iframe

всем спасибо. это сделал.

Есть ещё вот такой вопрос:

Выделить код

Код:

window.addEventListener('DOMContentLoaded', myload, false);

Так я ловлю событие загрузки окна,а как поймать это событие для моего iframe?

Отсутствует

 

№1012-02-2008 13:24:32

Shutnik
Участник
 
Группа: Extensions
Зарегистрирован: 12-11-2005
Сообщений: 3785
UA: Firefox 2.0

Re: iframe

Так я ловлю событие загрузки окна,а как поймать это событие для моего iframe?

Выделить код

Код:

window.addEventListener('DOMFrameContentLoaded', function (event) {
  if(event.originalTarget == fr)
    alert('loaded');
}, false);

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]