|
|
|
| Как можно, обратившись к скрипту примерно так: "script.php#34" получить вот это самое 34? $_SERVER проверял, не подходит=) | |
|
|
|
|
|
|
|
для: Киналь
(10.12.2005 в 11:22)
| | Только через JS. | |
|
|
|
|
|
|
|
для: Akira
(10.12.2005 в 11:48)
| | Жаль... А как через JS? | |
|
|
|
|
|
|
|
для: Киналь
(10.12.2005 в 15:21)
| | а зачем использовать JS так можно же script.php?num=34
и потом через $_GET этот нум и получать | |
|
|
|
|
|
|
|
для: Ressfourt
(10.12.2005 в 17:21)
| | Хм... Честно говоря, думал, спросит кто-нибудь об этом или нет... Спросили.
Весь смысл в том, чтобы именно таким образом. Тогда произойдет прокрутка страницы до якоря <a id=34>, и параллельно с этим можно было бы как-то обработать (выделить) элемент, соответствующий этому якорю. С помощью get можно выполнить только вторую часть задачи. | |
|
|
|
|
|
|
|
для: Киналь
(10.12.2005 в 18:31)
| | а если так script.php?num=34#34
;) | |
|
|
|
|
|
|
|
для: Vlad Macurov
(11.12.2005 в 05:32)
| | Неэлегантно
=)
Так как же с помощью JS? | |
|
|
|
|
|
|
|
для: Киналь
(11.12.2005 в 10:04)
| |
<a href=script.php#34
onclick=t=this.href;ti=t.indexOf('#');ta=t.substring(ti+1);tp="?num=";if(t.indexOf(tp)<0)this.href=t.substring(0,ti)+tp+ta+"#"+ta;return!1>
клик</a>
|
Если убрать return!1, скрипт пойдёт на выполнение, результат перейдёт по якорю. Если не убирать, при (повторном для FF) наведении мыши в статус-строке видим результат.
Если надо вынести функцию в обработчик прерывания, чтобы каждый раз не писать, присваиваем тегу "а" класс, чтобы выполнять эти действия при обнаружении его в обработчике.
<script>d=document;FF=navigator.appName=="Netscape"; /*isGecko*/
d.onclick=function(e){if(!e)e=event;t=FF?e.target:e.srcElement;
if(t.tagName=='A'&&t.className=='anch'){
th=t.href;ti=th.indexOf('#');ta=th.substring(ti+1);tp="?num=";
if(th.indexOf(tp)<0)t.href=th.substring(0,ti)+tp+ta+"#"+ta;
if(FF)e.preventDefault();else e.returnValue=!1;
}}
</script>
<a href=script.php#34 class=anch>клик</a><br>
<a href="javascript:document.write('normal link');">простая ссылка</a>
| Здесь, чтобы ссылки с классом anch заработали, убираем if(FF)e.preventDefault();else e.returnValue=!1; . | |
|
|
|
|
|
|
|
для: 12345
(11.12.2005 в 15:11)
| | >
<a href=script.php#34
>onclick=t=this.href;ti=t.indexOf('#');ta=t.substring(ti+1);tp="?num=";if(t.indexOf(tp)<0)this.href=t.substring(0,ti)+tp+ta+"#"+ta;return!1>
>клик</a>
|
Кажется, это то, что нужно; только что написать вместо this.href, чтобы получить нужное число из url'а? Прошу прощения, если глупость спрашиваю. | |
|
|
|
|
|
|
|
для: Киналь
(11.12.2005 в 17:23)
| | this.href - это обращение к атрибуту href=script.php#34
t.substring(ti+1); - это взятие нужного числа (ti=t.indexOf('#'); t=this.href; ) | |
|
|
|
|
|
|
|
для: 12345
(11.12.2005 в 20:48)
| | Да нет, это я все понял. Вопрос в другом - мне ведь нужно получать не из атрибута href, а из строки адреса. То есть в самом script.php, а не в ссылке на него. | |
|
|
|
|
|
|
|
для: Киналь
(11.12.2005 в 22:23)
| | Т.е. после вызова уже.
Это достаётся JS-ом по location.toString() или self.location.toString() .
В результате,
location.toString().substring(location.toString().indexOf('#')+1) ,если точно известно, что # там есть.
Или нет? Вопрос же в том, как получить это "34" на сервере? тогда верен прежний пример. Ставите ссылку такую, чтобы там параметр продублировался в специальной переменной, и только таким образом получаете на сервере num=34 . Так что нужно именно ссылку модифицировать, как советовали. Якорь остаётся у клиента, сервер о нём не знает.
Есть ещё фокус - сделать переход на текущей странице на страницу с параметром после ?, например, page.htm?v=34 . Правда, будет перезагрузка. Потом, после вызова script.php, достать этот параметр по $_SERVER['HTTP_REFERER'] | |
|
|
|
|
|
|
|
для: 12345
(12.12.2005 в 03:32)
| | [bl]ocation.toString().substring(location.toString().indexOf('#')+1)[/b]
То что надо! Буду думать дальше, как элементу с полученным id класс поменять; но это уж как-нибудь соображу.
Только один вопрос. Что будет, если диеза в адресе нет? Ну там ручки у кого-нибудь шаловливые оказались. Есть что-нибудь типа if (strpos($url, "#") == 0)? | |
|
|
|
|
|
|
|
для: Киналь
(12.12.2005 в 19:21)
| | Результат будет - весь урл, т.к. результат indexOf = (-1). | |
|
|
|
|
|
|
|
для: 12345
(13.12.2005 в 06:12)
| | О, спасибо. Буду пробовать. | |
|
|
|