Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.01.2012, 01:20
Интересующийся
Отправить личное сообщение для tavrik83 Посмотреть профиль Найти все сообщения от tavrik83
 
Регистрация: 27.08.2011
Сообщений: 12

Почему не работает такая конструкция
<script type='text/javascript'>
different=1;base=1;function redirect(){window.location="http://localhost/test/index2.php"}function gothere(arg){var different=arg;if(different>base){base=different;redirect()}setTimeout(function(){gothere(history.length)},30000)};
</script>

Заметил, что редирект происходит когда страница еще не загрузилась, т.е. при параметре от 1000 до 10000, а при 30000 (как в примере) страница успевает загружаться и редиректа нет. Почему? И как можно исправить?
<?php 
session_start(); 
$_SESSION['hash'] = md5(time());
?>
<!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">
<head>
<title>Пример</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<style type="text/css">
html,body{height:100%;padding:0;margin:0}
.header{height:100px;}
</style>
<script type='text/javascript'>
function getClientHeight(){return document.compatMode=='CSS1Compat' && !window.opera?document.documentElement.clientHeight:document.body.clientHeight}
var setIframe = function() {
    var ifr = document.getElementById('ifr');
    ifr.style.height = getClientHeight()+'px';
}
</script>
<script type='text/javascript'>
different=1;base=1;function redirect(){window.location="http://localhost/test/index2.php"}function gothere(arg){var different=arg;if(different>base){base=different;redirect()}setTimeout(function(){gothere(history.length)},30000)};
</script>
</head>
<body>
<iframe id="ifr" onload="base=history.length;gothere(history.length);" src="http://www.yahoo.com/" width="100%" height="100%" align="left" frameborder="0"></iframe>
<script type='text/javascript'>
var ex = new setIframe();
</script>
</body>
</html>
Ответить с цитированием
  #2 (permalink)  
Старый 18.01.2012, 21:53
Интересующийся
Отправить личное сообщение для tavrik83 Посмотреть профиль Найти все сообщения от tavrik83
 
Регистрация: 27.08.2011
Сообщений: 12

Потому что...
Ответить с цитированием
  #3 (permalink)  
Старый 18.01.2012, 23:08
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

А вы специально код в одну строчку вытянули, чтобы мы тут помучились?
Ответить с цитированием
  #4 (permalink)  
Старый 21.01.2012, 00:54
Профессор
Отправить личное сообщение для popov654 Посмотреть профиль Найти все сообщения от popov654
 
Регистрация: 22.09.2010
Сообщений: 217

Это же очевидно. У Вас значения равны, а в условии строгое неравенство стоит.
Ответить с цитированием
  #5 (permalink)  
Старый 21.01.2012, 16:14
Интересующийся
Отправить личное сообщение для tavrik83 Посмотреть профиль Найти все сообщения от tavrik83
 
Регистрация: 27.08.2011
Сообщений: 12

Сообщение от popov654 Посмотреть сообщение
Это же очевидно. У Вас значения равны, а в условии строгое неравенство стоит.
А можно ткнуть носом?
Ответить с цитированием
  #6 (permalink)  
Старый 21.01.2012, 16:34
Профессор
Отправить личное сообщение для popov654 Посмотреть профиль Найти все сообщения от popov654
 
Регистрация: 22.09.2010
Сообщений: 217

base=history.length;gothere(history.length);

Ну как бы вот. И это не единственное место, где неверно. Но чтобы подсказать Вам со вторым, мне нужно узнать логику Вашего скрипта. Иными словами, что Вы хотите сделать? При каких условиях должен происходить редирект, а при каких - нет?
Ответить с цитированием
  #7 (permalink)  
Старый 21.01.2012, 17:04
Интересующийся
Отправить личное сообщение для tavrik83 Посмотреть профиль Найти все сообщения от tavrik83
 
Регистрация: 27.08.2011
Сообщений: 12

Сообщение от popov654 Посмотреть сообщение
base=history.length;gothere(history.length);

Ну как бы вот. И это не единственное место, где неверно. Но чтобы подсказать Вам со вторым, мне нужно узнать логику Вашего скрипта. Иными словами, что Вы хотите сделать? При каких условиях должен происходить редирект, а при каких - нет?
Попробую:
Пользователь кликает по любой ссылке во фрейме (в данном случае yahoo.com) и после 30 секунд, несмотря на то, загрузилась ли новая страница в этом фрейме или нет, перенаправляется на другую страницу (в данном случае index2.php)
Как-то так...
Ответить с цитированием
  #8 (permalink)  
Старый 21.01.2012, 17:31
Профессор
Отправить личное сообщение для popov654 Посмотреть профиль Найти все сообщения от popov654
 
Регистрация: 22.09.2010
Сообщений: 217

Ну тогда в том месте у Вас всё верно. Попробуйте так:
var different, base;

function redirect(){
    window.location="http://localhost/test/index2.php"
}

function gothere(arg){
    if(arg > base){
        base=different;
        redirect()
    }
    setTimeout(function(){gothere(99999)},30000)
}
Ответить с цитированием
  #9 (permalink)  
Старый 21.01.2012, 17:43
Интересующийся
Отправить личное сообщение для tavrik83 Посмотреть профиль Найти все сообщения от tavrik83
 
Регистрация: 27.08.2011
Сообщений: 12

Сообщение от popov654 Посмотреть сообщение
Ну тогда в том месте у Вас всё верно. Попробуйте так:
var different, base;

function redirect(){
    window.location="http://localhost/test/index2.php"
}

function gothere(arg){
    if(arg > base){
        base=different;
        redirect()
    }
    setTimeout(function(){gothere(99999)},30000)
}
В этом случае редирект происходит даже если ничего не делать, а нужно чтобы редиректилось только после клика по любой ссылке
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему не работает на jQuery 1.4.4? pro10026 jQuery 13 06.03.2014 10:22
Почему не работает конструкция jquery quebek Элементы интерфейса 1 19.09.2011 23:14
Почему то работает, то нет? gyunduz Общие вопросы Javascript 0 22.01.2011 16:08
Анимация. Помогите понять почему не работает. kadurban jQuery 4 08.07.2010 20:50
Почему это работает? (инклуд JS в JS) Василий Б. Общие вопросы Javascript 4 11.06.2010 12:41