Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Изменить href ссылки.

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
Dezmont
Отправлено: 18 Ноября, 2012 - 13:33:33
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Июль 2010  


Помог: 1 раз(а)




Добрый день. Пытаюсь написать скрипт, чтобы он менял href тега <a>.
Проблема в том, что на сайте используются hash-данные (ну или как там они называются).
В общем URL изначально выглядит вот так: www.site.ru/home/name.
При клике по закладкам, которые есть на странице, он меняется вот так: www.site.ru/home/name/#section.tasks, www[dot]site[dot]ru/home/name/#section[dot]settings и т.д.
Когда через Greasemonkey прикручиваю скрипт к странице, то он ничего не меняет.
На главной странице (www.site.ru/home/name) выглядит вот так:
CODE (html):
скопировать код в буфер обмена
  1. <a href="#" id="icalendareventslista">

На странице www[dot]site[dot]ru/home/name/#section[dot]tasks JS, который на сайте меняет код вот так:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <a href="webcal://www.site.ru/icalendar/name/29096485/?tok=eJwNyzkOAzEIAMAXWTIGDDwHDEiRchTZKq-PTj8kwb7kQMvEQshaAI3pXIclCNeuqUvZStnD209ELWneiyN1ZP1en-c1no-vNZZN26Q8QtTMZTZuro3eaX3s-jETDFVJHMAymqyKgkh4VyDfDRPwD9E3KtA" id="icalendarlista">


Я вставляю такой код в greasemonkey:
CODE (javascript):
скопировать код в буфер обмена
  1. var iCal = document.getElementById('icalendareventslista').href;
  2. var date = new Date().valueOf();
  3. document.getElementById('icalendareventslista').href = iCal + '&' + date;

Но что-то ничего не работает. (((
Подскажите куда копать.
 
 Top
EuGen Администратор
Отправлено: 18 Ноября, 2012 - 14:17:58
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




CODE (html):
скопировать код в буфер обмена
  1. <a id="icalendareventslista" href="webcal://www.site.ru/icalendar/name/29096485/?tok=eJwNyzkOAzEIAMAXWTIGDDwHDEiRchTZKq-PTj8kwb7kQMvEQshaAI3pXIclCNeuqUvZStnD209ELWneiyN1ZP1en-c1no-vNZZN26Q8QtTMZTZuro3eaX3s-jETDFVJHMAymqyKgkh4VyDfDRPwD9E3KtA">LINK!</a>
  2.  

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. <script type='text/javascript'>
  3. var iCal = document.getElementById('icalendareventslista').href;
  4. var date = new Date().valueOf();
  5. document.getElementById('icalendareventslista').href = iCal + '&' + date;
  6. //alert(document.getElementById('icalendareventslista').href);
  7. </script>

?


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Dezmont
Отправлено: 18 Ноября, 2012 - 14:37:35
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Июль 2010  


Помог: 1 раз(а)




Что-то я не понял... Ничего ж не поменялось?

alert на странице www[dot]site[dot]ru/home/name/#section[dot]tasks выдаёт www[dot]site[dot]ru/home/name/#&1356833983

Так то по-идее код правильный, но из-за того что при переходе по вкладкам на сайте они генерирются с помощью JS, ничего не получается.
Если запускать скрипт через адресную строку на уже сгенерированной странице, то всё нормально работает. (
 
 Top
Dezmont
Отправлено: 19 Ноября, 2012 - 20:18:53
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Июль 2010  


Помог: 1 раз(а)




Хееееееелп.))) Больше ни у кого идей нет? (
 
 Top
armancho7777777 Супермодератор
Отправлено: 19 Ноября, 2012 - 20:36:32
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Dezmont пишет:
они генерирются с помощью JS

Они у Вас сами по себе генирируются?
 
 Top
EuGen Администратор
Отправлено: 19 Ноября, 2012 - 21:37:22
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Dezmont пишет:
Что-то я не понял... Ничего ж не поменялось?

Поменялось. Во-первых, закрыт тег <a> и во-вторых, id корректно указан.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Dezmont
Отправлено: 19 Ноября, 2012 - 21:38:57
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Июль 2010  


Помог: 1 раз(а)




armancho7777777 пишет:
Они у Вас сами по себе генирируются?

Честно, не в курсе. Про hash данные в интернете нагуглил только, и понял, что js в зависимости от них страницу дополняет.

http://www[dot]rememberthemilk[dot]com/
Вот там если зарегистрироваться или с помощью гуглуаккаунта войти, можно посмотреть. Сверху страницы сссылки, при нажатии на которые в адресной строке страница изменяется
CODE (htmlphp):
скопировать код в буфер обмена
  1. http://www.rememberthemilk.com/home/dezmont/
  2. http://www.rememberthemilk.com/home/dezmont/#section.tasks
  3. http://www.rememberthemilk.com/home/dezmont/#section.settings

И так далее.
Т.е. 1-я страница нормально генерируется, а последующие уже дополняют данными открытый шаблон.
(Добавление)
EuGen пишет:
Поменялось. Во-первых, закрыт тег <a> и во-вторых, id корректно указан.

Ой. Извините, на html даже не посмотрел.
 
 Top
DlTA
Отправлено: 19 Ноября, 2012 - 21:44:53
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




может не тот элемент выбрали, может на странице несколько элементов с таким id и вы смотрите на второй
 
 Top
Dezmont
Отправлено: 19 Ноября, 2012 - 21:46:11
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Июль 2010  


Помог: 1 раз(а)




Может я и неверно предполагаю, но это единственное, что думается.
Может в скрипте можно как-нибудь прописать, чтобы он следил за изменением параметра href тега a (после загрузки страницы) и при положительном результате совершал необходимые действия. Либо проверял бы hreaf a в соответствии с регуляркой.
Просто реализовать не знаю как, нужно изучать язык. (
 
 Top
DlTA
Отправлено: 19 Ноября, 2012 - 21:46:32
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




попробуйте в хроме
CODE (javascript):
скопировать код в буфер обмена
  1. console.log(document.getElementById('icalendareventslista'));

при этом в консоле должен появиться html найденного элемента, и при наведении на это html тот же объект на странице будет подсвечен
 
 Top
Dezmont
Отправлено: 19 Ноября, 2012 - 21:49:56
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Июль 2010  


Помог: 1 раз(а)




DlTA пишет:
ожет не тот элемент выбрали, может на странице несколько элементов с таким id и вы смотрите на второй

Нет. Элемент верный. Всё выполняется нормально просто дело в этих hash данных, которые идут после #. И в способе генерации страницы.Если даже напрямую в браузере набираешь http://www.rememberthemilk.com/home/dezmont/#section.tasks, то тебя сначала кидает на главную страницу (http://www.rememberthemilk.com/home/dezmon), а потом скрипт обрабатывает данные и выдаёт страницу.
(Добавление)
DlTA пишет:
попробуйте в хроме
CODE (javascript):
скопировать код в буфер обмена
console.log(document.getElementById('icalendareventslista'));

при этом в консоле должен появиться html найденного элемента, и при наведении на это html тот же объект на странице будет подсвечен

Это нужно выполнить в адресной строке, на нужной странице, предварительно введя javascript:? Если так, то результат у меня нулевой.
А если ввожу в адресной строке:
CODE (javascript):
скопировать код в буфер обмена
  1. javascript:
  2. var iCal = document.getElementById('icalendareventslista').href;
  3. var date = new Date().valueOf();
  4. document.getElementById('icalendareventslista').href = iCal + '&' + date;

То в результате получаю алерт с необходимой мне ссылкой.
 
 Top
DlTA
Отправлено: 19 Ноября, 2012 - 21:57:17
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




...

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

вообще в той же мозили посмотрите что за запросы происходят при подгрузке страницы

(Отредактировано автором: 19 Ноября, 2012 - 21:58:33)

 
 Top
Dezmont
Отправлено: 19 Ноября, 2012 - 21:58:05
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Июль 2010  


Помог: 1 раз(а)




Упс. Извиняюсь за нубство. Прочитал про console.log.
Выполнение команды мне выдало ссылку мою.
 
 Top
DlTA
Отправлено: 19 Ноября, 2012 - 21:59:51
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




Dezmont пишет:
Это нужно выполнить в адресной строке,

F12 последняя вкладка консоль
и там уже лабать
 
 Top
Dezmont
Отправлено: 19 Ноября, 2012 - 22:00:24
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Июль 2010  


Помог: 1 раз(а)




DlTA пишет:
и где нить на странице есть скриптик, который по этим якорям делает дополнительный запрос для подгрузки контента

Вот вот. Теперь бы додуматься, как бы мне отследить изменение ссылки? Может можно каждую секунду проверять, есть ли необходимая ссылка, и изменять её, если она соответствует регулярке. Ну или какой-нибудь подобный метод? Может есть какие-нибудь идеи?
Гугл выдал hashchange. Может подойдёт?

(Отредактировано автором: 19 Ноября, 2012 - 22:04:37)

 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB