Модераторы: Sardar, Aliance

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Генерация контента на лету, Собираем меню по правому клику мыши 
:(
    Опции темы
HappyMan
  Дата 12.4.2005, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 347
Регистрация: 29.7.2004

Репутация: 0
Всего: 2



есть линк
Значение этого линка отлавливается так:
Код

<script>
document.onmousedown=catchEvents;
function catchEvents(ev) {
 var tgt=window.event? window.event.srcElement: ev.target;
 var evt=window.event? window.event: ev;
 var rightB=evt.which? (evt.which==3): evt.button? evt.button==2: false;
 if(tgt.nodeType==1&&tgt.nodeName=="A"&&rightB) { 
   // alert(tgt.innerHTML); !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  // СДЕСЬ ДОЛЖЕН БЫТЬ КОД ГЕНЕРИРУЕМОГО МЕНЮ!
  // ПУНКТЫ МЕНЮ ДОЛЖНЫ БЫТЬ РАВНЫ tgt.innerHTML!!!
 }
}
</script>


Как сделать чтобы при этом щелчке генерировалось бы примитивное меню с пунктами = tgt.innerHTML ????
Добавлено @ 11:45
чуть не забыл:
Код

<body>
<a href="#">Test1111111</a>
<a href="#">Tes22222222</a>
<a href="#">Tes333333333</a>
<a href="#">T155544444444</a>
</body>


smile

Это сообщение отредактировал(а) HappyMan - 12.4.2005, 11:44


--------------------
Цитата
Желательно на 100%.
© Mal Hack
PM MAIL   Вверх
HappyMan
Дата 12.4.2005, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 347
Регистрация: 29.7.2004

Репутация: 0
Всего: 2



меню должно иметь вид:
Код

<DIV >
<TABLE>
 <TR><TD>ТУТ ДОЖНО БЫТЬ tgt.innerHTML</TD></TR>
 <TR><TD>ТУТ ДОЖНО БЫТЬ tgt.innerHTML</TD></TR>
</TABLE> 
</DIV>


Это сообщение отредактировал(а) HappyMan - 12.4.2005, 11:55


--------------------
Цитата
Желательно на 100%.
© Mal Hack
PM MAIL   Вверх
Sardar
Дата 12.4.2005, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



А в чём конкретно проблема? Ну самый простой способ это загнать разметку как она есть в body.innerHTML, естественно что синтаксических ошибок там быть не должно:
Код
<style type="text/css">
.menu {
  border: 1px solid black;
  position: absolute;
  background-color:#dedbf5;
  font-family: Verdana;
  color:#0a1a3a;
}
</style>
</head>

<body>

<script language="Javascript" type="text/javascript">
<!--
function test() {
var html="<DIV class='menu'><TABLE border='0'><TR><TD>ТУТ ДОЖНО БЫТЬ tgt.innerHTML</TD></TR>\
 <TR><TD>ТУТ ДОЖНО БЫТЬ tgt.innerHTML</TD></TR>\
</TABLE></DIV>";
document.body.innerHTML+=html;
}
//-->
</script>
<button onclick="test()">Test</button>
</body>



--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Aliance
Дата 12.4.2005, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



Вот тут обсуждалось нечто похожее, может пригодится.
PM MAIL WWW ICQ Skype   Вверх
HappyMan
Дата 12.4.2005, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 347
Регистрация: 29.7.2004

Репутация: 0
Всего: 2



Sardar
Aliance

наверно вы меня не правильно поняли:
мне нужно чтобы пункт меню, которое появляется после нажатия правой кн. мыши на линке, БЫЛ БЫ РАВЕН значению линка! т.е пункты меню создаются динамически - они зависят от tgt.innerHTML(значение линка, см. код выше)

понимаете?
Добавлено @ 18:35
привожу пример на ПХП smile

Код

$a="abc";
echo "<input type='button' value='".$a."' name='B3'>";

Добавлено @ 18:36
я считаю, что тут нечто похожее..


--------------------
Цитата
Желательно на 100%.
© Mal Hack
PM MAIL   Вверх
Aliance
Дата 12.4.2005, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



Так переделай его, это ж просто.
Код

<HTML>
<head>
<script>
function showMenu(obj, id, context) {
   var menu = document.getElementById(id);
   menu.style.left = obj.offsetLeft+"px";
   menu.style.top = obj.offsetTop+"px";
   menu.style.display = "block";
   menu.innerHTML = context;
}
</script>
</head>
<body>
<span onclick="showMenu(this, 'submenu1', 'Контент1')">menu</span>

<span onclick="showMenu(this, 'submenu2', 'Контент2')">menu2</span>

<div id="submenu1" style="display: none; left:0px; top: 0px; position: relative;"></div>
<div id="submenu2" style="display: none; left:0px; top: 0px; position: relative;"></div>

</body>
</HTML>


Это сообщение отредактировал(а) Aliance - 12.4.2005, 18:52
PM MAIL WWW ICQ Skype   Вверх
HappyMan
Дата 12.4.2005, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 347
Регистрация: 29.7.2004

Репутация: 0
Всего: 2



Aliance
будем пробовать...


--------------------
Цитата
Желательно на 100%.
© Mal Hack
PM MAIL   Вверх
Sardar
Дата 12.4.2005, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Цитата(HappyMan @ 12.4.2005, 10:42)
примитивное меню с пунктами = tgt.innerHTML

Ничего не ясно, в смысле того что ты хочешь smile
Цитата(HappyMan @ 12.4.2005, 17:32)
БЫЛ БЫ РАВЕН значению линка!

А это уже более осмысленно, но не врубаюсь то ли ты имеешь в виду содержимое ссылки, то ли адрес smile Попробуй сконцентрироваться и "родить" ясную мыслю smile

А вообще по барабану, берёшь разметку из твоего второго поста, там где хочешь иметь инфу пишешь + tgt.innerHTML + или что ты там еще хочешь. Затем получившуюся разметку кидаем в document.body или куда ты хочешь. Берём часть кода от Aliance - позиционирование элемента, применяем к меню. Всё просто за 15 минут.

Пока ты не определишся точно что тебе нужно, кода не будет smile smile


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
HappyMan
Дата 12.4.2005, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 347
Регистрация: 29.7.2004

Репутация: 0
Всего: 2



Sardar
да в том то и дело что Модератор Aliance: <вырезано> все равно или содержимое или адрес! главно чтоб динамически было! а поменять всегда можно smile

Это сообщение отредактировал(а) Aliance - 12.4.2005, 22:24


--------------------
Цитата
Желательно на 100%.
© Mal Hack
PM MAIL   Вверх
HappyMan
Дата 12.4.2005, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 347
Регистрация: 29.7.2004

Репутация: 0
Всего: 2



Aliance
как сделать чтобы "контент1" появлялся между Дивами(<div ....>сдесь должны быть динамические данные!</div>)??? т.к структура меню у меня сложная...


--------------------
Цитата
Желательно на 100%.
© Mal Hack
PM MAIL   Вверх
Aliance
Дата 12.4.2005, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



Пункты меня даны в спанах вообще-то. Хоть на чукотке, просто туда слой дива пихай и все.
А вообще-то тут не верстка, имхо.

М
 
HappyMan старайся не употреблять некорректных выражений, давайте сделаем форум чище.


Это сообщение отредактировал(а) Aliance - 12.4.2005, 22:30
PM MAIL WWW ICQ Skype   Вверх
HappyMan
Дата 13.4.2005, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 347
Регистрация: 29.7.2004

Репутация: 0
Всего: 2



Aliance
да, действительно спан, но разница не большая

Это сообщение отредактировал(а) Aliance - 13.4.2005, 18:54


--------------------
Цитата
Желательно на 100%.
© Mal Hack
PM MAIL   Вверх
HappyMan
Дата 13.4.2005, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 347
Регистрация: 29.7.2004

Репутация: 0
Всего: 2



полный исходник того, что удалось сделать:

Код

<script>
document.onmousedown=catchEvents;
function catchEvents(ev) {
 var tgt=window.event? window.event.srcElement: ev.target;
 var evt=window.event? window.event: ev;
 var rightB=evt.which? (evt.which==3): evt.button? evt.button==2: false;
 if(tgt.nodeType==1&&tgt.nodeName=="A"&&rightB) { 
   //alert(tgt.innerHTML); 
   fMn(this, tgt.innerHTML);
 }
}
</script>

<STYLE>
TABLE.mn {background:#c0c0c0}
TD.mnItem {font-size:14;align:left;background:#f0f0f0;padding-left=3pt;padding-right=3pt;}
TD.mnItemSelect {font-size:14;align:left;background:#eeeebb;padding-left=3pt;padding-right=3pt;}
</STYLE>

<script>
function contextFun(){return false;}
document.oncontextmenu = contextFun;
</SCRIPT> 
<script>
function fMn(obj, abc){
  pm.style.display = "block";
  pm.style.posLeft = document.body.scrollLeft + event.clientX - 10;
  pm.style.posTop = document.body.scrollTop + event.clientY - 10;
} 
function fMnItemOver(obj){obj.className = "mnItemSelect"}
function fMnItemOut(obj){obj.className = "mnItem"}
function fMnOut(obj){
 obj.style.display="none";
}
function fMnOver(obj){
 obj.style.display="block";
}
</SCRIPT>

<DIV id="pm" onmouseout="fMnOut(this)" onmouseover="fMnOver(this)" style="position:absolute;display:none">
<TABLE class="mn" cellPadding=0 cellSpacing=1>
 <TR><TD class="mnItem" onmouseover="this.style.cursor='default'; fMnItemOver(this)" onmouseout=fMnItemOut(this)>Dinamic Data HERE</TD></TR>
 <TR><TD class="mnItem" onmouseover="this.style.cursor='default'; fMnItemOver(this)" onmouseout=fMnItemOut(this)>Dinamic Data HERE</TD></TR>
</TABLE> 
</DIV>

<body>
<a href="#">Link1</a>
<a href="#">link2</a>
<a href="#">link3</a>
</body>



Dinamic Data HERE должно равнятся abc
Добавлено @ 19:37
Aliance
в твоем случае ты просто делаешь
Цитата
menu.innerHTML = context;

а в моем такое не проходит...

Это сообщение отредактировал(а) HappyMan - 13.4.2005, 19:33


--------------------
Цитата
Желательно на 100%.
© Mal Hack
PM MAIL   Вверх
HappyMan
Дата 13.4.2005, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 347
Регистрация: 29.7.2004

Репутация: 0
Всего: 2



ЕЕЕЕЕЕЕЕ получилось!

нада так:
Код

function fMn(obj, abc){
  pm.style.display = "block";
  pm.style.posLeft = document.body.scrollLeft + event.clientX - 10;
  pm.style.posTop = document.body.scrollTop + event.clientY - 10;
  document.getElementById("con1").innerHTML=abc;
} 

и
Код

<TR><TD class="mnItem" onmouseover="this.style.cursor='default'; fMnItemOver(this)" onmouseout=fMnItemOut(this)><div id="con1">test</div></TD></TR>

Добавлено @ 19:48
походу дела еще небольшой вопросик:

мне нужно, чтобы по нажатию на этот Див - вылетал бы alert(abc)!

kak?
Добавлено @ 19:50
это уже вопрос посложнее, т.к там нада ставить такое:
Код

<div id="con1" onclick=alert(abc)>test</div>

и теперь какимто образом передать переменную abc... но как?
Добавлено @ 19:53
если значение можно было установить с помощью id="con1" то тут уже так не сделать...
Добавлено @ 19:56
что-то подсказывает мне что такоее вообще не сделать.. smile


--------------------
Цитата
Желательно на 100%.
© Mal Hack
PM MAIL   Вверх
Aliance
Дата 13.4.2005, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137




 ! 
 
Прочти пожалуйста правила форума!!!  :angry:


В твоей функции просто добавь это:
Код

var elem = document.getElementById('con1');
elem.onclick = alert(abc);


Это сообщение отредактировал(а) Aliance - 13.4.2005, 20:05
PM MAIL WWW ICQ Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.4818 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.