Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.05.2010, 07:44
Интересующийся
Отправить личное сообщение для GRean Посмотреть профиль Найти все сообщения от GRean
 
Регистрация: 17.04.2010
Сообщений: 22

Как заставить событие сработать один раз
Всем привет!

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

Вот пример.

сам код:
<script type="text/javascript">   
  
var timeout;   
  
function clickAction() {   
 
                 
    frameFitting();   
    var fr = document.getElementById('demo_frame').contentWindow.document.body.getElementsByTagName('a'); 
    //alert(mode); 
    //document.write(mode);

    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>   
</head>   
<body>   
<iframe src="text.html" id="demo_frame" align="center" scrolling="no" frameborder="0" marginheight="0" marginwidth="0"></iframe>
Ответить с цитированием
  #2 (permalink)  
Старый 18.05.2010, 10:06
Аватар для Skipp
.
Отправить личное сообщение для Skipp Посмотреть профиль Найти все сообщения от Skipp
 
Регистрация: 30.03.2010
Сообщений: 1,813

А зачем ты используешь setInterval ?
__________________
.
Ответить с цитированием
  #3 (permalink)  
Старый 18.05.2010, 11:36
Интересующийся
Отправить личное сообщение для GRean Посмотреть профиль Найти все сообщения от GRean
 
Регистрация: 17.04.2010
Сообщений: 22

Код не мой, я еще плохо знаю js, но я сам более внимательней посмотрел код, в нем много лишнего.
Упрощенный вариант и рабочий. Работает в IE, Opera, FF.
Самый простой способ узнать высоту документа для iframe.
<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>

Последний раз редактировалось GRean, 18.05.2010 в 12:51.
Ответить с цитированием
  #4 (permalink)  
Старый 06.06.2010, 23:26
Новичок на форуме
Отправить личное сообщение для Gokusa Посмотреть профиль Найти все сообщения от Gokusa
 
Регистрация: 04.06.2010
Сообщений: 6

ну поставь какой-нить "флажок"
я просто js тоже не шарю,лень разбираться в этих каляках.
ну обычно объявляют переменную,присваивают ей значение при неком событии,и уже смотрят по значению переменной состояние
Ответить с цитированием
  #5 (permalink)  
Старый 07.06.2010, 00:29
Любитель
Отправить личное сообщение для JsLoveR Посмотреть профиль Найти все сообщения от JsLoveR
 
Регистрация: 16.12.2009
Сообщений: 422

Сообщение от Gokusa
ну поставь какой-нить "флажок"
я просто js тоже не шарю,лень разбираться в этих каляках.
ну обычно объявляют переменную,присваивают ей значение при неком событии,и уже смотрят по значению переменной состояние
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как искусственно вызвать событие, назначенное кнопке в данном скрипте? begin jQuery 7 09.08.2011 11:08
Окно открывается только один раз altermann ExtJS 8 22.04.2010 11:55
Чтоб ссылка появлялась один раз для каждого пользователя (по IP или Cookies) Sequoia Общие вопросы Javascript 2 28.01.2010 19:16
Как заставить браузер использовать закэшированное изображение? fog Общие вопросы Javascript 5 13.08.2009 15:40
как проверить поддеружет браузер определенное событие? GOll Элементы интерфейса 9 24.07.2008 14:40