Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> html5 history, передача данных между страницами
N0ob  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 790
Пользователь №: 37078
На форуме: 3 года, 8 месяцев
Карма: 13




Значит вызываю я страницу вот таким вот макаром:
window.history.pushState({uri:pgname}, null, targetLink);
self.loadPage(pgname, self.options);


И ставлю обработчик на случай, если нужно вернуть страницу назад:
window.addEventListener('popstate', function(e){      
var uri = e.state.uri.substr(1);

if(self.modalWindow.length && self.modalWindow)
{
self.closewindow();
}

self.loadPage(uri);

},false);


Выползает вот такая вот ошибка:
Цитата
Uncaught TypeError: Cannot read property 'uri' of null


Строка, на которой она срабатывает:
var uri = e.state.uri.substr(1);


Вообще, данные передаются и я не знаю почему выдает, что переменная пустая
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
kaww  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1755
Пользователь №: 20757
На форуме: 6 лет, 10 месяцев, 1 день
Карма: 184




Предположу, что ошибка только в случае если возвращаешься назад слишком далеко, т.е. на страницу, которую добавил в историю не ты, а браузер
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
N0ob  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 790
Пользователь №: 37078
На форуме: 3 года, 8 месяцев
Карма: 13




kaww но смотри. Нажимаю на ссылку, вызывается этот код:
window.history.pushState({uri:pgname}, null, targetLink);
self.loadPage(pgname, self.options);

То есть добавляю страницу в историю, передаю параметры(данные) с текущей страницы в созданную. И ведь создаю я, а не сам браузер. И вот что делать, не знаю
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
N0ob  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 790
Пользователь №: 37078
На форуме: 3 года, 8 месяцев
Карма: 13




Вот полностью метод, который я инициализирую при стартовом запуске страницы:
	this.init = function ()
{
var self = this;

$('a[class=link]').on('click', function(event)
{
event.preventDefault();

var targetLink = $(this).attr('href');
var pgname = targetLink.substr(1) == "" ? "main":targetLink.substr(1);
var pgname = pgname == window.location.pathname.substr(1) ? null:pgname;

window.history.pushState({uri:pgname}, null, targetLink);
alert(pgname);

self.loadPage(pgname, self.options);

return false;
});


//

window.addEventListener('popstate', function(e){

var uri = e.state.uri.substr(1);

if(self.modalWindow.length && self.modalWindow)
{
self.closewindow();
}

self.loadPage(uri);

},false);
}
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
kaww  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1755
Пользователь №: 20757
На форуме: 6 лет, 10 месяцев, 1 день
Карма: 184




N0ob, простой пример, который должен помочь понять это http://jsfiddle.net/9sud3jns/2/
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
N0ob  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 790
Пользователь №: 37078
На форуме: 3 года, 8 месяцев
Карма: 13




kaww спасибо, суть проблемы понял. И решил ее таким способом - в самом начале метода прописал вот такую строку:
window.history.replaceState({uri:window.location.pathname.substr(1)}, '');

И все стало работать. Только вот странно, что у меня такую ошибку выдало. Раньше все было тип-топ. Мб обнова какая в html5 :lol:
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса