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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Клик мышью, определить над каким обьектом, опция меню, копирование URL ссылки 
:(
    Опции темы
Sl@va
Дата 1.2.2005, 22:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 22.11.2004
Где: Нижний Новгород

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



Здравствуйте !
Имеется такая задача. Я хочу сделать, чтобы при навадении курсора например на ссылку и при нажатии правой кнопки мыши открывалось контекстное меню, которое тоже сделано на javascript. В этом меню будет пункт "Копировать ссылку". Выбрав этот пункт запускается функция, которая как раз и копирует сам url адрес этой ссылки в буфер обмена. Само контекстное меню на javascript я сделал. Как скопировать текст в буфер обмена, покопаясь в инете нашел парочку примеров. Но вот как сделать функцию, которая бы определяла что курсор в момент вызова контекстного меню находится над ссылкой и считывала ее Url, представляю только очень поверхностно.
Буду очень благодарен если подскажете.
Заранее спасибо.
PM MAIL WWW ICQ Skype   Вверх
sergejzr
Дата 1.2.2005, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 10
Всего: 360



Следует определить ссылке событие onclick.

Или обрамить текст тэгом span и ему определить onclick.

Код

<span onclick="MyMenu(this)" >здесь линк </span>



--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Sardar
Дата 2.2.2005, 01:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


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

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



Можно ловить mouseover на документе и сохранять где нибудь над кем провели мышью. В ИЕ это srcElement, в Mozilla это target. При самом клике можно опрашивать переменную. Это должно работать универсально для всех обьектов без прописывания им особых событий. Но если речь идёт только о сылках, то лучше перебрать их и поставить на них клик, как сказал sergej.z.


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


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 22.11.2004
Где: Нижний Новгород

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



А не подскажете, как будет примерно выглядеть код для чтения url адресы ссылки ?
PM MAIL WWW ICQ Skype   Вверх
sergejzr
Дата 2.2.2005, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 10
Всего: 360



Код

<span onclick="MyMenu(this)" >здесь линк </span>

<script >
function MyMenu(obj)
{
alert(obj.innerHTML);
}
</script>



--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Sl@va
Дата 2.2.2005, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 22.11.2004
Где: Нижний Новгород

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



Ок!
Спасибо !
PM MAIL WWW ICQ Skype   Вверх
Sl@va
Дата 2.2.2005, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 22.11.2004
Где: Нижний Новгород

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



Я тут с этой проблемкой немного разобрался. Но вот как сделать так, чтобы каждый раз не всатвлять между тегами <A> вызов обработчика onmouseover (<a href="http://site1.com" onmouseover=f(this) >1 site</a>), а сделать эту програмку универсальной для всех ссылок на странице. У меня чегото никак не получается передать "(this)" функции "f", получается какаято ерунда. Приведенный ниже код работает, но при наведении на ссылку выводит вместо реального адреса ссылки "undefined"
smile

Код

<html>
<head>

<script>
document.onmouseover = f;

function f()
{
var srcElement = event.srcElement;
if (srcElement.tagName == "A")
{
alert (srcElement.url);
}
}
</SCRIPT>

</head>
<body>
<a href="http://site1.com">1 site</a><br>
<a href="http://site2.com.">2 site</a>
</body>
</html>

PM MAIL WWW ICQ Skype   Вверх
Zorro
Дата 2.2.2005, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 26.10.2003
Где: Россия, Тюмень

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



А если просто сразу после загрузки страницы обойти все ссылки и прописать у них onmouseover.

Функция:
Код

function f(ev)
{
var elem = window.event ? window.event.srcElement : ev.target; // Для IE первый вариант, для остальных браузеров воторой
alert(elem.href);
}

Код, который нужно расположить в самом конце страницы (перед закрывающим body):
Код

var links = document.getElementsByTagName("A"); // Получить все ссылки
for(var i=0; i<links.length; i++) // Обойти их
{
links[i].onmouseover = f; // И прикрепить функцию
}


Это сообщение отредактировал(а) Zorro - 2.2.2005, 22:10
PM MAIL WWW ICQ   Вверх
Sl@va
Дата 2.2.2005, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 22.11.2004
Где: Нижний Новгород

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



А какой код в конце ?
Добавлено @ 22:12
Ой, извеняюсь. Все увидел. Первый раз браузер почемуто его не отобразил.
Сейчас попробуем ...
PM MAIL WWW ICQ Skype   Вверх
Sl@va
Дата 2.2.2005, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 22.11.2004
Где: Нижний Новгород

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



Неа, тоже самое. Вместо реального адреса ссылки печатаен "Undefined"

smile
PM MAIL WWW ICQ Skype   Вверх
Sardar
Дата 2.2.2005, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


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

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



Sl@va есть порой вещи, в которые трудно поверить smile smile
Вот этот код должен работать:
Код
var lastlink=null; //ссылка на послений линк, над которым проводили мышью
function grabLink(ev) {
 var l=window.event? window.event.srcElement: ev.target;
 if(l&&l.tagName&&l.tagName.toUpperCase()=="A") lastlink=l; //это ссылка, значит берём её

 //а это для теста, потом убери
 if(lastlink==null) document.getElementById("dbg").innerHTML=l.nodeName;
 else document.getElementById("dbg").innerHTML=lastlink.getAttribute("href");
}
//регистрируем события
if(document.body.addEventListener) document.body.addEventListener("mouseover", grabLink, false);
else if(document.body.attachEvent) document.body.attachEvent("onmouseover", grabLink);

HTML
<div id="dbg"></div>
<a href=".">Test</a>
<a href="http://vingrad.ru">Test</a>


Твоя задача выбирать когда потребудется всё необходимое из lastlink если он не равен null.


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


I ♥ <script>
****


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

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



Цитата(Sl @ 2.2.2005, 21:16)
var srcElement = event.srcElement;
if (srcElement.tagName == "A")

IE only

Цитата(Zorro @ 2.2.2005, 22:05)
var elem = window.event ? window.event.srcElement : ev.target;

Бред

Код

function find(evt) {
 evt = (evt) ? evt : ((window.event) ? event : null )
 if (evt) {
    var target = (evt.target) ? evt.target : ((evt.scrElement) ? evt.srcElement : null )
    if (target && target.tagName && target.tagName.toLowerCase() == "a") {
       // обработываем, если ЕСТЬ событие, и элемент, с которого
       // это событие пришло - <a ...>...</a>
    }
 }
}

PM MAIL WWW ICQ Skype   Вверх
Sl@va
Дата 2.2.2005, 23:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 22.11.2004
Где: Нижний Новгород

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



Спасибо за помощь! Обязательно возму ваш пример себе на заметку.
Как говорится если долго мучиться, что нибудь получиться.
Вот результат моей трехчасовой деятельности:

HTML
<html>
<head>
<script>
document.onmouseover = domouseover;

function domouseover()
{
var srcElement = event.srcElement;
if (srcElement.tagName == "A")
{
alert (event.srcElement.href);
}
}
</script>
</head>
<body>
<span><a href="http://site1.com">1 site</a></span><br>
<a href="http://site2.com.">2 site</a>


</body>
</html>


Наконец то это заработало
PM MAIL WWW ICQ Skype   Вверх
Sardar
Дата 2.2.2005, 23:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


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

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



Цитата(Aliance @ 2.2.2005, 22:26)
Бред

Aliance следи за выражениями.

Второе, проверяй что говоришь, хотя бы запусти, а то на глазок можно попась в некрасивую ситуацию как сейчас, ибо ты не прав smile

Sl@va твой код IE only, посмотри на примеры выше.


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


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 22.11.2004
Где: Нижний Новгород

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



Ок, спасибо, на счет кода я это учту.

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


 




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


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

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