2013-12-05 3 views
1

У меня есть несколько ячеек таблицы типа:Переход к ссылке с правой кнопкой мыши

<td oncontextmenu=";return false;"> 
    <a href="..."title="Hydrogen">H</a><br> 
    2.20 
</td> 

Мой вопрос: Как сделать JavaScript, который захватывает название ссылки, и идет к http://en.wikipedia.org/wiki/TITLE_OF_THE_LINK, когда я прав -икать в соответствующей ячейке?

ответ

0

Что вы ищете в основном это:

HTML:

<td oncontextmenu="goTitle(this); return false"> 
    <a href="#" title="hydrogen">h</a> 
</td> 

JavaScript:

function goTitle(el) { 
    var link = el.firstChild; 
    var url = "http://en.wikipedia.org/wiki/" + link.title; 
    window.location.href = url; 
} 

Для простоты предполагается, ваша ссылка всегда первый элемент в вашем td

+0

Спасибо! Работайте отлично! – user2874096

1

Вы можете использовать window.location, чтобы перенаправить пользователя.

HTML

<td oncontextmenu="gotoWiki(event);return false;"> 
    <a href="..."title="Hydrogen">H</a><br> 
    2.20 
</td> 

JS

function gotoWiki(event) { 
    // Extract the target from the event 
    var target = event.target || event.srcElement; 

    // Get the link 
    var link; 
    if (target.tagName == "A") { 
     // If the target is an <a>-Tag, it's the link 
     link = target; 
    } else { 
     // Otherwise, get the first <a>-Tag 
     link = target.getElementsByTagName("a")[0]; 
    } 
    // If getElementsByTagName() returned an element and it has the title attribute 
    if (link && title = link.getAttribute("title")) { 
     // Redirect 
     window.location.href = "http://en.wikipedia.org/wiki/" + encodeURIComponent(title); 
    } 
} 
+0

Вы уверены, что '(event.target || event.srcElement) 'даст вам ссылку, когда обработчик контекстного меню привязан к' td'? Разве вы не должны сначала искать 'a', чтобы получить правильный элемент? – Luaan

+0

@Luaan Я бы привязал событие ко всей таблице, содержащей эти ссылки, но вы можете выбрать любой элемент, который является прямым или косвенным родителем ссылки. Кроме того, 'event.target' и' event.srcElement' возвращают действительный элемент clicked, независимо от того, имеет ли он событие привязано на себя или на одного из своих родителей. – Butt4cak3

+0

Да, но я ожидаю, что ссылка на самом деле не заполняет весь td (иначе почему бы не включить oncontextmenu или что-то другое в ссылку?). Таким образом, вы получите td, а не ссылку. – Luaan

Смежные вопросы