Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Вёрстка веб-сайтов > Сделать весь фрейм ссылкой


Автор: Всемогущий 6.3.2007, 19:42
Сделать весь фрейм ссылкой.
Возможно ли это?

Автор: Mymik 6.3.2007, 20:57
да, поставь у фрейма onclick="document.location = 'http://www.microsoft.com/'"

Автор: Всемогущий 6.3.2007, 21:05
Код

<iframe onclick="document.location = 'http://www.microsoft.com/'" ></iframe>

именно так .не работает smile 

Автор: Mymik 7.3.2007, 10:02
А есть возможность в теле iframe приписать на body событие onclick ??? Если руками нет возможности, тогда с помощью JS нужно.
Код

document.getElementById(<iframeID>).contentWindow.document.body.onclick = 'document.location = "http://www.microsoft.com/"';

Однако к сожалению не знаю, сработает ли это для всего документа или только для фрейма... Если не сработает для всего документа, тогда скорее всего надо будет через window.location = "http://www.microsoft.com/" сделать.

Автор: Всемогущий 7.3.2007, 11:06
если прописать руками ,работает.

Цитата(Mymik @  7.3.2007,  12:02 Найти цитируемый пост)
Код

document.getElementById(<iframeID>).contentWindow.document.body.onclick = 'document.location = "http://www.microsoft.com/"';


а так не хочет.
то что я подгружаю во фрейм,не является частью моего сайта.

Автор: Mymik 7.3.2007, 13:34
тогда предлагаю несколько замороченное предложение :о)
Записать iframe в див :о)
Код

<div onclick="document.location = 'http://www.microsoft.com'"><iframe ></iframe></div>

Автор: hAhol13 9.11.2009, 08:53
Извиняюсь за поднятие оччень старой темы, но нашел через поиск - как раз та тема, над которой бьюсь уже сутки. Имеется iframe, уже в div. необходимо, чтоб по клику открывалось новое окно с содержимым фрейма (весь фрейм - картинка, обновляемая яваскриптом). Перепробовал всё, в том числе предложенное здесь. Если есть какие-либо еще идеи, то буду благодарен.

Заранее спасибо!

Автор: bars80080 9.11.2009, 15:12
Цитата(hAhol13 @  9.11.2009,  07:53 Найти цитируемый пост)
Извиняюсь за поднятие оччень старой темы, но нашел через поиск

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


Цитата(hAhol13 @  9.11.2009,  07:53 Найти цитируемый пост)
Имеется iframe, уже в div. необходимо, чтоб по клику открывалось новое окно с содержимым фрейма 

по клику чего? по фрейму или кнопки какой?
во фрейме ваш домен или иной?

можно попробовать растянуть над фреймом слой абсолютно позиционированный и написать переход по нему

кстати, везде где выше советовалось document.location - ошибка, у document нет такого свойства, переправьте на window.location

во-вторых, новое окно средствами javascript открывается с помощью window.open()

и в-третьих, в таком урезанном варианте задача кажется совершенно не реальной (ну, мож криминалом чуть попахивает), можете рассказать что конкретно у вас происходит на странице?

Автор: hAhol13 9.11.2009, 19:00
Хм.. по другим форумам привык, что "не создавайте новые темы" smile Извините.

Более подробно суть вопроса:
Имеется страничка, полностью разделенная на 4 равных части, в каждую подгружается изображение с внешних источников. Разделение - CSS, div. То есть 4 div'а, в каждом iframe, параметром src подгружаю изображение. Далее содержимое фрейма (изображение) обновляется посредством яваскрипта:
Код

function refreshiframe() 
{
parent.iframe_name.location.href='******' 
setTimeout('refreshiframe()',5000);
}

По большому счету всё замечательно и изумительно, но мне нужно, чтоб кликом по изображению открывалось новое окно с одним единственным изображением - с тем, что было в том фрейме. Обновление настроить думаю будет менее трудно.

Автор: bars80080 9.11.2009, 20:06
а нельзя ли самому изображению назначить кликабельность? то есть код внутри фрейма поддаётся правке?

Автор: hAhol13 10.11.2009, 18:44
Хм.. то есть? Изображение подгружается так:

Код

<iframe id='***' src='*****'>
</iframe>


Между открывающим и закрывающим, собственно, и нет ничего...

Автор: bars80080 10.11.2009, 19:02
в смысле? путь к картинке в src iframe`а?

Автор: hAhol13 10.11.2009, 19:06
Ну да. А вы предлагаете так:

Код

<iframe id='**'>
<a href='****'>
<img src='**'>
</img>
</a>
</iframe>


Верно?

Автор: bars80080 10.11.2009, 20:11
в общих чертах да. одно непонятно, зачем вообще здесь фреймы?

Автор: hAhol13 11.11.2009, 04:20
Обновление. Мне неудобен тег meta. Мне удобней именно обновление по скрипту refreshiframe

А что значит "в общих чертах"?

Автор: Любитель 11.11.2009, 08:31
Цитата(hAhol13 @  11.11.2009,  04:20 Найти цитируемый пост)
Обновление. Мне неудобен тег meta. Мне удобней именно обновление по скрипту refreshiframe

 smile А что мешает src у имаджа менять?

Автор: bars80080 11.11.2009, 10:36
Цитата(hAhol13 @  11.11.2009,  03:20 Найти цитируемый пост)
Обновление. Мне неудобен тег meta. 

не понял. какие meta?
почему картинки было не засунуть в дивы на одной странице?


Цитата(hAhol13 @  11.11.2009,  03:20 Найти цитируемый пост)
А что значит "в общих чертах"?

значит, что реализаций много. <a href="" target="_blank"> или <img onclick="" />

Автор: hAhol13 11.11.2009, 14:24
meta - это у которого http-equiv=refresh.

Кстати через <a href=""> c img внутри не работает. Через img onclick как должно быть?

<img onclick="window.open('ссылка'); return false;"/>

Так?

src у img не надо менять, он один и тот же. Просто картинка с данным адресом обновляется где-то там. Просто refreshiframe не перезагружает всю страничку целиком, а только эти картинки. И через необходимые (разные для каждой картинки) промежутки времени. Как бы всех устраивает smile

ЗЫ Плагин-валидатор в огнелисе полностью согласен с таким

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

Метод валидации - сначала SGML Parser, потом HTML Tidy

Автор: bars80080 11.11.2009, 14:59
Цитата(hAhol13 @  11.11.2009,  13:24 Найти цитируемый пост)
src у img не надо менять, он один и тот же. Просто картинка с данным адресом обновляется где-то там

можно менять

Код

image1.src = 'http://server.ru/pic1.jpg?par=123';
// на
image1.src = 'http://server.ru/pic1.jpg?par=124';


это даст вам 100%-ную перезагрузку не взирая ни на какие кэши.
к тому же, насколько я помню meta refresh работает только в ИЕ

Цитата(hAhol13 @  11.11.2009,  13:24 Найти цитируемый пост)
Кстати через <a href=""> c img внутри не работает

не могёт такого быть.
Код

<a href="http://server.ru/pic1.jpg" target="_blank"><img src="http://server.ru/pic1.jpg" /></a>


Автор: hAhol13 11.11.2009, 19:46
Код

<div id="имя">
<iframe name="имя"  style="width: 100%; height: 100%; marginwidth: 0; marginheight: 0; scrolling: 0; frameborder: 0; hspace: 0; vspace: 0;">
<a href="путь_к_файлу" target="_blank">
<img class="имя" src="ссылка" alt="текст"/>
</a>
</iframe>
</div>


Так - не работает. Ни в ИЕ, ни в Огнелисе, ни в Опере.. Кстати meta refresh у меня и в Огнелисе работал. В опере не помню.

Ссылка на изображение, так сказать, статична и от меня не зависит. Я наверно, просто не понимаю, в силу ограниченности знаний, что вы предлагаете сделать с этой самой ссылкой для перезагрузки изображения..  smile  smile 

Автор: Любитель 11.11.2009, 20:48
bars80080 прав - в 99% случаев достаточно добавления рандомного гет-параметра (есть исключения, но они редки). Какого вида твои ссылки?

Автор: bars80080 11.11.2009, 21:11
Код

<script>
function refr() {
    var bk = document.getElementById('t');
    if(!bk) return false;
    var el = bk.getElementsByTagName('img');
    if(!el) return false;
    var ell = el.length;
    var d = new Date();
    var par = d.getHours() + '' + d.getMinutes();
    for(var i = 0; i < ell; i++) {
        el[i].src = el[i].title + '?par=' + par;
    }
}
var tm = setInterval('refr()', 60000);
</script>
<table id="t">
<tr><td><div><a href="pic1.jpg" target="_blank"><img src="pic1.jpg" title="pic1.jpg" /></a></div></td>
<td><div><a href="pic2.jpg" target="_blank"><img src="pic2.jpg" title="pic2.jpg" /></a></div></td></tr>
<tr><td><div><a href="pic3.jpg" target="_blank"><img src="pic3.jpg" title="pic3.jpg" /></a></div></td>
<td><div><a href="pic4.jpg" target="_blank"><img src="pic4.jpg" title="pic4.jpg" /></a></div></td></tr>
</table>
остаётся только стилями придать нужный вид

Автор: hAhol13 12.11.2009, 05:36
Большое спасибо..

Ссылки (их 4) имеют вид http://server.ru/dir/name.html

Я очень благодарен bars80080 за то время, что Вы на меня тратите. После данного вашего примера начало работать автомасштабирование изображений, и, самое главное, ссылки. Теперь изображения кликабельны и открывают себя в новом окне  smile Одна закавыка - в ИЕ и Опере после обновления я получаю красный крестик и alt-текст, а в Огнелисе обновления просто нет  smile даже если я меняю ссылку напрямую на изображение - http://server.ru/dir1/dir2/name.jpg, не помогает. Либо крестик, либо не обновляется.

Я правильно понимаю, что при фреймах не было автомаштабирования (цсс) и ссылки не работали, из-за того что это было в обновляющемся фрейме?

UPD:

Вспомнил про упоминание растягивания абсолютно позиционированного слоя поверх уже имеющегося изображения, вот что получилось:

Код

<div id="имя">
<iframe name="имя" style="width: 100%; height: 100%; marginwidth: 0px; marginheight: 0px; scrolling: 0; frameborder: 0; hspace: 0px; vspace: 0px;">
<img class="имя" src="ссылка" alt="текст"/>
</iframe>
</div>

<a href="ссылка" target="_blank">
<div id="имя">
</div>
</a>


Работает в огнелисе - обновление, кликабельность. А вот в ИЕ и опере - нет..  smile 

Автор: bars80080 12.11.2009, 10:52
Цитата(hAhol13 @  12.11.2009,  04:36 Найти цитируемый пост)
 в ИЕ и Опере после обновления я получаю красный крестик и alt-текст

строится неправильный адрес. выведите, что получается (к примеру так: alert(el[i].src);) и посмотрите что там у вас. подставьте этот адрес в адресную строку браузера, точно ли там есть изображение


п.с. чуть не забыл, я надеюсь вы там используете абсолютные адреса, начинающиеся с http:// ?

Автор: hAhol13 12.11.2009, 17:29
Да, адреса идут вида http:/server.ru/dir/name.html (правда один есть оканчивается на пхп, но суть-то таже у него..)

Вывожу таким образом: <body onload="refr(); alert(el[i].src);">. Ну собственно выводил и без refr();. Ие выдает ошибку  
Цитата

'el' - определение отсутствует.


И вопрос - возможно, метод и не очень красивый, но со слоем же работает.. Почему только в фоксе?

Автор: bars80080 12.11.2009, 18:46
Цитата(hAhol13 @  12.11.2009,  16:29 Найти цитируемый пост)
<body onload="refr(); alert(el[i].src);">

в данном случае ничего и не будет, el определена только внутри функции

Автор: hAhol13 12.11.2009, 20:37
Виноват smile

Значит так.. изображение делается так:

<img class="имя" src="ссылка" title="что-то" alt="что-то"/>

Из сообщения alert я узнаю, что адрес строится как путь до директории, содержащей файл index.html (который в себе и содержит весь код моей злополучной странички) + содержимое title +?par=xxxx:

file:///C:/dir1/dir2/"title"?="xxxx"

Как уже сказал, dir2 содержит в себе файл index.html. Но разумеется, там нет ничего похожего на построенный адрес. Почему строится он к локальным документам?

ЗЫ параметр alt потребован SGML Parser'ом smile

Автор: bars80080 13.11.2009, 00:57
Цитата(hAhol13 @  12.11.2009,  19:37 Найти цитируемый пост)
file:///C:/dir1/dir2/"title"?="xxxx"

ух ты, какая страшная вещь. а ведь она никакого отношения к вэбу не имеет. такое может глючить по разному.
вэб-адреса начинаются с http://

Автор: hAhol13 13.11.2009, 07:35
 smile  Спасибо вам..
Код


el[i].src = el[i].title + '?par=' + par;
 - получается, неправильный адрес только лишь из-за title вместо src?  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)