Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Путь во frame
 
 автор: Sonnelon   (25.06.2008 в 03:25)   письмо автору
 
 

Приветствую, уважаемые. Прошу помощи в решении нескольких вопросов. Думаю, вам они не должны показаться сложными. Итак. Прошу помочь мне правильно определить адрес объекта (точнее его св-ва, но это не суть важно). На странице есть frame (name="main") в нем загружена хэтэмэлка с объектом - рамкой img'a (name="kat"). Мне нужно определить адрес свойства - цвета этой рамки. Вот что вышло у меня (вышло, но не работает):
main.kat.style.borderColor

   
 
 автор: Sonnelon   (25.06.2008 в 03:34)   письмо автору
 
   для: Sonnelon   (25.06.2008 в 03:25)
 

Были ещё варианты:
window.main.document.kat.style.borderColor;
document.main.kat.style.borderColor;
В принципе часть kat.style.borderColor проблем не вызывает, работает с документа, на котором находится, но она уже во фрейме. И как к ним из главного окна путь прописать... В общем чёт у меня не выходит.

   
 
 автор: PAT   (25.06.2008 в 05:10)   письмо автору
 
   для: Sonnelon   (25.06.2008 в 03:25)
 

var obj = window.frames.main.document.getElementsByName ('kat') [0];
if (obj.currentStyle) alert (obj.currentStyle.borderColor); //для MSIE
else alert (document.defaultView.getComputedStyle (obj, null).getPropertyValue ('border-top-color')); //для Mozilla
* Если вы пропишете (и для MSIE, и для Mozilla) obj.style.borderColor, то получите только то значение, кое написано непосредственно в HTML-коде в атрибуте STYLE тега <IMG NAME="kat"> - вне зависимости от того, какой цвет рамки рисунок имеет на самом деле (цвет рамки может быть установлен в блоке стилей <STYLE></STYLE>; может быть установлен внешним CSS-файлом; может быть таким, каким ему положено быть по-умолчанию; может меняться в зависимости от наведения мыши или от посещенности [если картинка является ссылкой]; может устанавливаться скриптом...)

** Приведён ОБЩИЙ вариант обращения к элементу, находящемуся во фрейме и имеющему атрибут NAME. Но в данном случае (т.к. элемент - картинка) возможен иной способ обращения - через коллекцию images, т.е.:
var obj = window.frames.main.document.images ('kat');

*** Разумеется, всё вышенаписанное будет работать только в том случае, если во фрейме будет находиться документ с того же домена, что и top-файл. Из "чужих" документов в html-формате узнать про свойства каких-либо элементов вы не сможете.

**** Обращаю внимание на то, что Mozilla здесь не понимает свойства border-color "вообще", ей нужно указать конкретную сторону. В примере я выбрал top, но может быть и left, right или bottom

   
 
 автор: Sonnelon   (25.06.2008 в 12:54)   письмо автору
 
   для: PAT   (25.06.2008 в 05:10)
 

Премного благодарен (:
Will try. А рамка-колор у меня вобще-то тоже на скрипте. На onClick меняет цвет, как бы выделяясь относительно остальных.

   
 
 автор: Sonnelon   (25.06.2008 в 19:28)   письмо автору
 
   для: Sonnelon   (25.06.2008 в 12:54)
 

Всё получилось, спасибо. Только с Mozill'ой одна проблема: когда в этот фрейм загружаю другой документ, а после снова документ с объектом, скрипт не работает. И если во фрейме по дефолту не хтмлка с объектом (сама она позже загружается тычком по ссылке). В Опере всё хорошо. А вот Mozilla... Подскажите пожалуйста, в чем дело.

   
 
 автор: PAT   (25.06.2008 в 21:09)   письмо автору
 
   для: Sonnelon   (25.06.2008 в 19:28)
 

>Подскажите пожалуйста, в чем дело.

Трудно сказать, не зная как именно вы подключаете этот скрипт.
Посмотрите, что вам "подскажет" Консоль ошибок в Mozilla: когда скрипт вопреки ожиданию не прореагирует, надо зайти в "Инструменты--Консоль ошибок" и посмотреть - что будет там написано в самой верхней строке.

   
 
 автор: Sonnelon   (25.06.2008 в 22:24)   письмо автору
39.5 Кб
 
   для: PAT   (25.06.2008 в 21:09)
 

Я думаю это может помочь. Очередность моих действий. Запустил страницу с фреймом, где по дефолту был документ с объектом. Скрипт сработал. Поменял документ во фрейме на другой, затем опять на док. с объектом. Попробовал запустить скрипт. Не работает. Скрин. (скрин и .js файл прилагаются)

   
 
 автор: Sonnelon   (25.06.2008 в 23:29)   письмо автору
 
   для: Sonnelon   (25.06.2008 в 22:24)
 

Похоже "ob.currentStyle is undefined" (строка18) не при чём. Это для Оперы. "none is undefined"-левое. Это я ссылку навоял<a href="javascript:none" onClick="line()".. что бы страница сама себя во фрейм не грузила и документ с объектом оставался на месте. Так удобней. Потом всё равно заменю. Остается только "Premission denied to get property Window.document" К тому же это единственная ошибка, которая остается, если убрать часть скрипта на оперу.

   
 
 автор: PAT   (26.06.2008 в 05:32)   письмо автору
1.3 Кб
 
   для: Sonnelon   (25.06.2008 в 23:29)
 

Что-то странное у вас написано в JS-файле.
Практически бессмысленное.


В общем - смотрите аттач, разбирайтесь.

1. Грузите index.html, где изначально НИЧЕГО не загружено в нижний фрейм.

2. Можно грузить "чужой", можно "свой" - в любом порядке и сколько угодно раз.

3. При "своём" файле всё работает без проблем (тестировал в Opera, MSIE, FireFox).

* Вместо <IMG> использованы <INPUT> исключительно за ради экономии времени - ибо <IMG> без указанных и загруженных SRC не реагируют на CLICK. Рисовать 4-е картинки и архивировать их было лень :-)

   
 
 автор: Sonnelon   (26.06.2008 в 13:23)   письмо автору
 
   для: PAT   (26.06.2008 в 05:32)
 

Ну извините :) В js я не профессионал. Далек до него. (Но на опере-то скрипт работает как надо (: Значит не всё ещё потеряно в моих кодерских перспективах:)) В любом случае спасибо большое. Буду разбираться.
P.S.: Всё. Нашел. Проблема в другом. Просто у меня вместо обычного firefox'a minefield (думаю, небезызвестный вам) стоял. Поставил нормальный ровный firefox и всё заработало :) Даже мой кривой скрипт :)

   
 
 автор: Sonnelon   (26.06.2008 в 14:26)   письмо автору
 
   для: Sonnelon   (26.06.2008 в 13:23)
 

И не могли бы вы подсказать как определить (и, в дальнейшем, изменить) атрибут тега ссылки(<a name="name"...>) href="... ? document.name.link ?
(то есть я имею ввиду при выделении картинки, и соответственно, цвета её рамки, ссылка, вызывающая скрипт name="name" меняет свой href в зависимости от выделенной картинки)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования