Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > вывод параметра в адресную строку исп. инъекцию


Автор: 3Dmind 25.8.2011, 14:27
Привет форумчане!
вопрос: как сделать javascript инъекцию которая после выполнения бы заменяла текущий УРЛ в адресной строке броузера??
Изначально есть следующая инъекция, которая добывает значение параметра NAME
Код

javascript: name = audioPlayer.lastSong[5] + " - " + audioPlayer.lastSong[6];

Нужно чтоб этот самый параметр вписывался в адресную строку!! (допустим NAME = example - text)

Условия:
  • не должно быть обновления страницы!! т.е. по выполнению скрипта - страница не перходит на новый линк!
  • скрипт должен работать под google chrome!
  • уникальные символы параметра NAME не должны заменяться на иероглифы(%20, & amp и др.)

собственно что сделал??
Код

javascript: name = audioPlayer.lastSong[5] + " - " + audioPlayer.lastSong[6]; ; window.location.hash = name; void 0;

данная инъекция как не странно работает, но есть несколько косяков которые хотелось бы исправить:
  • хоть и не происходит редирект страницы, но нужно несколько секунд прежде чем параметр example - text появится в адресной строке.. (для меня это не вариант по некоторым причинам)
  • не существенно, но УРЛ не меняется - вместо этого к существующему адресу дописывается #example - text
  • и наконец, если параметр содержит "example's - text", то в адресной страке пишеться "example&" Очень надоедает

какие еще могут быть варианты решения проблемы?

П.С. пробовал использовать window.history.replaceState() но как оказалось это тоже был не вариант т.к. вместо каждого пробела писалось - %20 а вместо ' - ' ТУТ ДОЛЖЕН идти иероглиф но ваш форум его не отображает
Код

javascript: name = audioPlayer.lastSong[5] + " - " + audioPlayer.lastSong[6]; window.history.replaceState(name, name, name);

Автор: 3Dmind 28.8.2011, 19:30
будем считать что 
уникальные символы параметра NAME не должны заменяться на иероглифы(%20, & amp и др.)
не проблема. Это должно облегчить задачу..

написал вот такой вот скрипт:
Код

javascript: name = audioPlayer.lastSong[5] + " - " + audioPlayer.lastSong[6]; window.history.pushState('Object', 'Title', '#'+name);


но он не идеален из за "response time", та же проблема что и с window.location.hash

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)