2010-10-25 4 views
0
var where_to = confirm("You have locked this record. You can only leave by clicking cancel."); 

if (where_to== true) { 
alert(window.location); 
window.location.href = window.location; 
} else { 
window.location.href = window.location; 
} 

Эта функция работает в IE 7 и firefox и opera 10.6. То, что он делает, не позволяет загружать другую страницу, если пользователь не нажимает ссылку или кнопку, вызывающую функцию токена.Window.location Работает Не везде

Окно.location.href заменяется текущим URL-адресом, если не вызывается функция токена.

Спасибо за ваше время.

+0

«IE 7 и firefox and opera 10.6» ... когда это НЕ работает? – AGoodDisplayName

+0

Он не работает в Chrome или Safari. –

+0

Что вы подразумеваете под 'It does not work' в Chrome или Safari? –

ответ

2

Ваш синтаксис испорчен. Слишком много других утверждений.

Это проблема здесь:

} else { 
    //alert(tokenset); 
    alert('You have passed the token test'); 

} 

EDIT

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

В этом случае вы должны использовать событие onbeforeunload. Вот IE page, и вот Mozilla page на мероприятии.

Идея заключается в том, что в любое время, когда пользователь пытается покинуть страницу (даже закрыв браузер или набрав другой адрес в адресной строке), эта функция вызывается.

Функция ограничена. Вы можете возвращать только строку. Браузер использует это, чтобы запросить пользователя. Если они нажмут «отмена», они останутся на странице. Они могут нажать «ОК» и продолжить покидать страницу. Хотя вы можете возвращать только строку, вам это не нужно. Вы можете проверить условие и вернуть строку только в том случае, если условие прошло. Смотрите мой следующий пример:

window.onbeforeunload = function() { 
    if (MyTokenIsNotSet) { 
     return 'You have not released the lock'; 
    } 
}; 

Если маркер установлен, то пользователь не увидит ничего, и они будут просто покинуть страницу. В противном случае это заставит пользователя убедиться, что они действительно хотят покинуть страницу.

Несколько вещей, чтобы отметить:

  • Стремительное выглядит по-разному в разных браузерах (формулировка отличается). Я бы попробовал, чтобы ваша строка выглядела нормально, остальная часть подсказки.
  • Это не мешает пользователю уйти. Это только напоминает пользователю, что они ДОЛЖНЫ делать что-то другое. Невозможно надежно предотвратить выход из страницы пользователя.
  • В дополнение к этому вы должны обработать событие, закончившееся сеансом пользователя (на сервере), и освободить блокировку в это время.
+0

Я бы предположил, что это часть более крупного блока кода - он сказал, что он работает в IE 7, Firefox и Opera. Если бы была синтаксическая ошибка, это не сработало бы вообще. –

+0

Да, я убрал некоторые из них. скрипт выполняется без ошибок, и я могу оповестить о замене window.location. По какой-то причине хром и сафари могут видеть новый window.location.href, но они не применяют его. –

+0

Я попробовал window.location.href = window.location.href; и он работает в ie7, firefox, но не в хром или сафари. Я не очень забочусь о сафари. –

0

У вас есть два другого заявления и дополнительные}

if (where_to== true) 
{ 

    alert(window.location); 

    window.location.href = window.location; 

} else { 

    alert('You have passed the token test'); 

} 

Пожалуйста, заполните нас с вашим кодом, вы, кажется, не хватает какой-то из этого?

Редактировать править: Попробуйте удалить предупреждение.Иногда предупреждения могут вызывать проблемы, так что это может помешать вашей настройке window.location.href

Смежные вопросы