Тема: iframe и событие onblur как сделать кросс-браузерным?

Ответить в теме
Показано с 1 по 4 из 4
  1. Вверх #1

    Angry iframe и событие onblur как сделать кросс-браузерным?

    Приветствую веб-дизайнеров и сочувствующих!

    Помогите советом: написал скрипт, который изменяет размер iframe только в Ослике10 (и вроде Опере - только при редактировании свойство потерялось Говорят, сейчас есть новый обработчик событий addEventListener, так подскажите пожалуйста, либо
    1) как изменить скрипт, чтобы addEventListener работал с айфреймом либо
    2) можно ли классический обработчик заставить работать (скрипт аж из 1 команды, прописывать в заголовке стpaницы 300 строк или подключать библиотеки крайне лень, сейчас вызывается из строчки)

    кодъ
    <iframe name ="iframe" src="http://...(не мой домен, данные не передать никак)" align="left" style="height:550px;width:1073px;padding:0; margin:0" scrolling="no" onblur ="setTimeout(function() { this.style.height=15000+'px';}, 10)"></iframe>

    К сожалению, для айфрейма всего 4 кросс-браузерных обработчика, и Blur должен везде работать по идее При нажатии в фрейме кнопки Поиск страничка перерисовывается и таки в MSIE скрипт срабатывает. Onmouseover ИЧСХ срабатывает во всех браузерах...


  2. Вверх #2
    Посетитель
    Пол
    Мужской
    Сообщений
    115
    Репутация
    21
    Для iframe кроссбраузерную обработку событий помнится делал так:
    Код:
    		var iframe = document.createElement("iframe");
    		eventPush(iframe, 'load', function () { ... });
    
    	function eventPush(obj, event, handler)
    	{
    		if (obj.addEventListener)
    			obj.addEventListener(event, handler, false);
    		else if (obj.attachEvent)
    			obj.attachEvent('on' + event, handler);
    	}
    addEventListener работает только в Gecko браузерах. Для любимого всеми IE надо использовать addEvent...

  3. Вверх #3
    Спасибо, kulikar! Хотелось бы попробовать, но не догоняю всё еще: eventPush отвечает за перехват события, а её аргументы "iframe, 'load', function () { ... }" это и есть те самые загадочные event, handler, false-отвечает за состояние безымянной функции? Тогда зачем создавать айфрейм, с параметрами по умолчанию и именем -- это для того, чтобы все аттрибуты передать из безымянной? А не проще ли работать с существующим в тексте iframe - задать ID и манипулировать с единственным НУЖНЫМ параметром height? var iframe = document.getElementById("iframe") ? Стлокнулся с проблемой: не получается вынести функцию из строчного скрипта в отдельный тэг - не из-за этого ли createElement?

  4. Вверх #4
    Посетитель
    Пол
    Мужской
    Сообщений
    115
    Репутация
    21
    Цитата Сообщение от xobbit Посмотреть сообщение
    Спасибо, kulikar! Хотелось бы попробовать, но не догоняю всё еще: eventPush отвечает за перехват события, а её аргументы "iframe, 'load', function () { ... }" это и есть те самые загадочные event, handler, false-отвечает за состояние безымянной функции? Тогда зачем создавать айфрейм, с параметрами по умолчанию и именем -- это для того, чтобы все аттрибуты передать из безымянной? А не проще ли работать с существующим в тексте iframe - задать ID и манипулировать с единственным НУЖНЫМ параметром height? var iframe = document.getElementById("iframe") ? Стлокнулся с проблемой: не получается вынести функцию из строчного скрипта в отдельный тэг - не из-за этого ли createElement?
    Ну это я для пример написал. Так-то конечно лучше дать айфрэйму ID и получать доступ через getElementById.
    В принципе и фукнция eventPush сделана для удобства. Можно этот if else if вручную везде писать) Но так удобнее.

Ответить в теме

Метки этой темы

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения