X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Как заставить событие сработать один раз
GRean_hb
GRean_hb
Topic Starter сообщение 18.5.2010, 8:06; Ответить: GRean_hb
Сообщение #1


Всем привет!

У меня есть страница, которая подгружает внешний word-документ.html
В вордовском документе есть ссылки, которые введут на закладки внутри этого документа. Все работает норм. Но на самой странице есть код, который проверяет размер документа по высоте.При первой загрузке он работает хорошо. Но если я нажимаю переход на ссылку внутри подгруженного документа, то js начинает постоянно срабатыват, тем самым увеличивая размеры самой страницы по высоте. Это видно по скроллу, который тянется вверх. Подскажите плииз, как избавиться от этого?
Пример.

<script type="text/javascript">  
  
var timeout;  
  
function clickAction() {  

                
    frameFitting();  
    var fr = document.getElementById('demo_frame').contentWindow.document.body.getElementsByTagName('a');

    for (var i=0; i<fr.length; i++) {  
        fr[i].onclick = function() {  
            clearInterval(timeout);  
            timeout = setInterval("frameFitting()",100);  
    
        }
    }
      
}  
  
function frameFitting() {
  
  
    document.getElementById('demo_frame').width = '560';  
    document.getElementById('demo_frame').height = document.getElementById('demo_frame').contentWindow.document.body.scrollHeight+50+'px';

    var h = document.getElementById('demo_frame').contentWindow.document.body.scrollHeight;
    
document.getElementById('demo_frame').height = h+'px';

}  
  
onload = clickAction;  
  
</script>  

<iframe src="text.html" id="demo_frame" align="center" scrolling="no" frameborder="0" marginheight="0" marginwidth="0"></iframe>
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZhukV
ZhukV
сообщение 18.5.2010, 10:19; Ответить: ZhukV
Сообщение #2


В цыкле for можна использоовать break, что остноновит даный цыкл.
for(var i=0; i < 100; i++){
  if(i == 50){
    alert(i);
    break;
  }
}

Вот так и увидиш, сколько раз сработал цыкл.

Если нужно проверять на событие, тоесть, чтоб клик сработал только один раз, то здесь лучше сделать удаление событий из элемента.
Но также можна вот так:

window.IS_FUNCTION = false;

function RT(){
  if(window.IS_FUNCTION)return;
  alert("YES");
}

<a href="#" onclick="RT()">123</a>
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
GRean_hb
GRean_hb
Topic Starter сообщение 18.5.2010, 13:00; Ответить: GRean_hb
Сообщение #3


Спасибо за отзыв, но задачка оказалась на много проще.

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

<script type="text/javascript">  
  

function clickAction() {  


   document.getElementById('demo_frame').width = '560';
   document.getElementById('demo_frame').height;
   document.getElementById('demo_frame').contentWindow.document.body.scrollHeight;

   document.getElementById('demo_frame').width = '560';  
   document.getElementById('demo_frame').height = document.getElementById('demo_frame').contentWindow.document.body.scrollHeight;

      
}  
onload = clickAction;  
  
</script>

<iframe src="docum6.html" id="demo_frame" align="center" scrolling="no" frameborder="0" marginheight="0" marginwidth="0"></iframe>


Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Арбитражники, как ведете учет расходов и доходов?
12 Boymaster 1915 Вчера, 21:03
автор: MisterBit
Горячая тема (нет новых ответов) Как вывести деньги в Украине с заблокированного Юмани ?
29 freeax 4813 17.4.2024, 1:19
автор: sergio11
Горячая тема (нет новых ответов) Как вы отдыхаете от работы за компом
148 adw-kupon.ru 19712 8.4.2024, 10:37
автор: Skyworker
Открытая тема (нет новых ответов) Как вы бросили работу и перешли на заработок с сайтов?
18 uahomka 3104 5.4.2024, 5:53
автор: Skyworker
Горячая тема (нет новых ответов) Как бездомные хранят деньги?
81 metvekot 13657 31.3.2024, 12:44
автор: Boymaster


 



RSS Текстовая версия Сейчас: 20.4.2024, 2:32
Дизайн