Как захватить открытую ссылку в новой вкладке или окне, используя jquery? - PullRequest
4 голосов
/ 21 октября 2011

Можно ли захватить нажатие правой кнопки мыши в новом окне / вкладке или колесе мыши, открытое в новом окне / событии вкладки, с помощью jQuery?
ОБНОВЛЕНИЕ 1
Вот почему мне это нужно,У меня есть приложение codeigniter, которое использует класс нумерации страниц.Я использую этот класс для отображения сетки.Ссылки на страницы были привязаны с помощью метода, который использует AJAX для загрузки следующей страницы в контейнерный элемент div.Теперь кто-то может щелкнуть правой кнопкой мыши и открыть следующую страницу в новой вкладке / окне, которое мне не нужно.ИМХО, единственный способ справиться с этим - это каким-то образом отловить (щелчок правой кнопкой мыши или нажатие колеса мыши) в новом окне / вкладке.
ОБНОВЛЕНИЕ 2
Я только что понял, что все моиAJAX-запросы обслуживаются одним контроллером CI, который фактически действует как прокси для других классов / библиотек.В этом контроллере я могу посмотреть на запрос, и если это не AJAX-запрос, я могу перенаправить пользователя на другую страницу.

Ответы [ 4 ]

1 голос
/ 21 октября 2011

Обходное решение состоит в замене всех применимых <a> элементов на кнопки, где (очевидно) кнопки будут вызывать JavaScript, который выполняет соответствующую навигацию.

Если вы действительно заинтересованы, вы можете применить CSS ксделать кнопки похожими на <a> элементы, хотя я не рекомендую это делать, потому что это сбивает с толку пользователей, которые могут попытаться обработать их как стандартные ссылки и щелкнуть по ним правой или средней кнопкой мыши.

(Вы можете даже получитьэто работает для пользователей, у которых не включен JavaScript, например, делая каждую кнопку кнопкой отправки в своей маленькой форме.)

0 голосов
/ 22 марта 2012

Если вы не хотите, чтобы люди получали доступ к ссылке обычным способом или откатывались, когда JS отключен, тогда это не должна быть ссылка. Просто используйте любой понравившийся элемент (span, div, button, что угодно) и стилизуйте его как ссылку. Затем свяжите действие, используя JS. Или вы можете использовать ссылку с href="#" или href="javascript: void(0)". Таким образом, если пользователь щелкнет по нему правой кнопкой мыши и решит открыть в новом окне, он окажется на той же странице, что и раньше.

0 голосов
/ 21 марта 2012

Я почти исправил подобную проблему для страницы, над которой я работаю. Мое исправление заключалось в том, чтобы внести некоторые изменения в страницу, если она была открыта в новом окне ....

Предположим, что вы открываете страницу "B" со страницы "A" в новом окне.

Если вы хотите проверить, открывается ли страница «B» в новом окне со страницы «A», выполните следующие действия.

If (document.referrer == "A" && window.history.length > 1) {
     alert("I am page 'B' and opened from page 'A' in a new window");
}
0 голосов
/ 21 октября 2011

По крайней мере, вы можете поймать щелчок правой кнопкой мыши, используя .mousedown() (или, предположительно, mouseup()). См. этот ответ StackOverflow о щелчках правой кнопкой мыши для получения дополнительной информации. И поймав его, вы сможете сделать стандартный event.preventDefault(), а затем делать то, что вам нравится оттуда. Однако это может быть излишним, так как это может помешать пользователю делать другие вещи, которые вы хотите ему разрешить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...