Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Открытие вкладок/табов с другой страницы (https://javascript.ru/forum/misc/50732-otkrytie-vkladok-tabov-s-drugojj-stranicy.html)

siszone 09.10.2014 12:03

Открытие вкладок/табов с другой страницы
 
Добрый день! Не силен в js, но встал вопрос.
Есть страница с регистрацией site.ru/registration
и на ней имеется 2 вкладки, Частное лицо и Организация. При открытии страницы - всегда активна "Частное лицо", и далее при нажатии на "Организация" - она открывается и закрывается "Частное лицо".
Казалось бы на странице всё верно и хорошо работает...но вот встал вопрос, как сделать так чтобы при клике с другой стрницы(например с главной) открывалась сразу же вкладка "Организация". А при обычном переходе на страницу с регистрацией - открывалась так же "Частное лицо"

В песочнице сделал пример. http://learn.javascript.ru/play/YMhgqb

kostyanet 09.10.2014 12:05

Закладку передавайте через урл и все. Типовая задача для закладок. Ну по-вашему табов-шмабов.

www.example.com/reg#company
www.example.com/reg#person

siszone 09.10.2014 12:13

Цитата:

Сообщение от kostyanet (Сообщение 334260)
Закладку передавайте через урл и все. Типовая задача для закладок. Ну по-вашему табов-шмабов.

www.example.com/reg#company
www.example.com/reg#person

Пробовал, но не получается.

Подскажите пожалуйста как это сделать конкретно на моём примере.

kostyanet 09.10.2014 12:38

Ну у вас же есть место куда юзер тычет чтобы переключить эти табы - там есть функция, правильно? Вам только надо дописать где-нить в load еще метод, который проверит хэш и, если есть проверит есть ли такой на странице, а если есть - то щелкнет его и все.

kostyanet 09.10.2014 12:42

Цитата:

Сообщение от siszone
конкретно на моём примере.

На вашем примере нельзя, надо на своем. Туторная страница нихочит показывать location.hash, не знаю почему.

Вот сюда тычат?

$('#js_regForm1').toggleClass('hide');

А теперь если без проверок сделать вот так

$(location.hash).toggleClass('hide');

что будет если в урле вот так www.example.com#js_regForm1

siszone 09.10.2014 12:43

Цитата:

Сообщение от kostyanet (Сообщение 334276)
Ну у вас же есть место куда юзер тычет чтобы переключить эти табы - там есть функция, правильно? Вам только надо дописать где-нить в load еще метод, который проверит хэш и, если есть проверит есть ли такой на странице, а если есть - то щелкнет его и все.

Место есть, но вот есть ли функция незнаю. Не понимаю вообще js. Какой load, куда его :-?
Помогите довести до финального конца на моём примере.

Вот пример я сделал http://learn.javascript.ru/play/YMhgqb

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.js"></script>

<style>
.hide {display: none;}
</style>


<script type="text/javascript">
function toggleRegForm(e)
{
	$('#js_regForm1').toggleClass('hide');
	$('#js_regForm2').toggleClass('hide');
	var tmp = e.innerHTML;
	e.innerHTML = e.rel;
	e.rel = tmp;
}
</script>


<div id="js_regForm1">
		<!-- person -->
		<div class="clear"></div>
		<div class="tab3 tab3-active"><div>Частное лицо</div></div>
		<div class="tab3"><div><a href="#" onclick="toggleRegForm(this);return false;" rel="Частное лицо">Организация</a></div></div>
  Частное лицо успешно открыто
</div>


<div id="js_regForm2" class="hide" >
		<!-- organization -->
		<div class="clear"></div>
		<div class="tab3"><div><a href="#" onclick="toggleRegForm(this);return false;" rel="Частное лицо">Частное лицо</a></div></div>
		<div class="tab3 tab3-active"><div>Организация успешно открыто</div></div>
  </div>

kostyanet 09.10.2014 12:47

То есть назовите по-человечески эти якоря - js_regForm1 - и прямо их постите в хэш и берите прямо оттуда.

$('#reg_company').toggleClass('hide');
$('#reg_person').toggleClass('hide');

потом в фунции которая открыла табу

location.hash = this.id; // не помню, кажется решетку еще надо вручную добавлять

kostyanet 09.10.2014 12:48

Цитата:

Сообщение от siszone
Помогите довести до финального конца на моём примере.

Ну нет там хэша в песочнице этой, птыть..

Блин, ну это просто же. Вы вообще не понимаете что такое закладка? Это раньше - кусок документа на который можно было сослаться из документа. Ну вот, чтобы отобразить этот факт закладки отображались в урле через решетку. Соответственно если если такой урл сохранить, а потом открыть - то браузер сразу мотает до закладки - без скриптов вообще, сам.

Но,поскольку у вас они занимают одно место, то нужен скрипт который покажет ту, на которую надо мотать из хэша урла.

<script type="text/javascript">
// подразумеваем что хэш (за решеткой) есть всегда, и правильный
$(location.hash).toggleClass('hide');
</script>

Все. Ну то есть теперь надо смотреть что там скроется, что покажется, логику эту ... это сами, это просто.

siszone 09.10.2014 13:39

Понял что ничего не понял)))))
Понял что скрипт отлавливает хэш, и далее надо прописать логику. А до логики не дорос я никак

kostyanet 09.10.2014 18:53

Во-первых 2 таба не имеют значения, их может быть 22 или 222. То есть сразу делайте нормально. То есть должен быть контейнер этих табов. На этот контейнер вешается апликуха в 30 строк и все пашет без вашего участия и без всяких там инстансей.

Кстати, есть такой ивент https://developer.mozilla.org/en-US/...s.onhashchange

Я не проверял, ибо "щетаю" табы уебищным изобретением. Они меня на винде за...бали так, что на вебе их никогда сам делать не буду, только под пытками. Но если ивент работает относительно у всех - то вам только хэш закидывать в локейшн и написать метод который будет переключать. Тогда станет эквипенисуально кто поменял хэш - скрипт или юзер. Впрочем есть подозрение что со скрипта может не сработать или придется поджигать вручную.


Часовой пояс GMT +3, время: 12:31.