2011-12-28 3 views
2

Если я просто нажимаю на большую часть ссылки Facebook, он будет загружен на ту же страницу с помощью ajax, но если я посередине/ctrl-click, он будет загружен на новую вкладку.Ссылка Ajax, которая также может быть открыта на новой вкладке? (например, Facebook)

Я сделал это на полпути, но он не работает полностью, [Редактировать] Среднее щелчок и щелчок правой кнопкой мыши> открытые открытые вкладки - это новая вкладка, но ctrl-click вызывает onclick [/ Edit]. Любая идея, как это сделать правильно?

<a href="/link/location" onclick="doAjax(); return false;">link</a> 
+0

Что значит «не работает» "для ctrl-click? Что на самом деле происходит? – nnnnnn

+0

@nnnnnn 'doAjax();' запускается вместо открытия в новой вкладке. –

ответ

3

Вместо того, чтобы всегда возвращаются ложь непосредственно в (рядный) OnClick, вы хотите, чтобы вернуть результат функции, а затем в тесте функции использовалась ли клавиша управления:

<a href="/link/location" onclick="return doAjax(event);">link</a> 

<script> 
function doAjax(e) { 
    if (!e) e = window.event; 

    if (!e.ctrlKey) { 
     alert("Ajax code here"); 
     return false; 
    } 
} 
</script> 

Демонстрация: http://jsfiddle.net/DrvYg/

Более подробная информации о свойствах объекта события для события мыши: https://developer.mozilla.org/en/DOM/MouseEvent

(по Кстати, вам не нужен бит if (!e) для встроенного обработчика событий, но я как бы привык писать его, потому что я не использую встроенные обработчики событий.)

+0

спасибо за ответ, я тоже думал об этом, прежде чем спрашивать, но проблема в том, что я не уверен, что ctrl всегда означает open-in-new-tab в каждой среде. Например, если использование настроило его среду и т. Д. –

+0

Я бы не стал беспокоиться об этом. Вышеизложенное позволяет независимо от того, что по умолчанию используется для управления щелчком, что означает, что наихудший случай для вас - это ссылка откроется в текущем окне/вкладке, заменив текущую страницу. Учитывая, что вы все равно ссылаетесь на одну из своих страниц, я не думаю, что это проблема. Кроме того, обратите внимание, что это будет происходить для пользователей, у которых отключен JavaScript, которые вы должны разрешить в любом случае. Просто убедитесь, что 'href' является подходящим для предоставления вашей функциональности без Ajax. – nnnnnn

+0

Кажется, вы правы, я больше об этом думаю. –

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