javascript - Как сделать так, чтобы onclick «window.location» также работал, когда пользователь открывает новое окно - PullRequest
1 голос
/ 13 октября 2010

Чтобы скрыть истинное назначение ссылки, я использую следующий код:

<a href="http://example.com" onclick="window.location='http://url-i-want-to-hit.com/'; return false;">Click me</a>

Однако, если я щелкну правой кнопкой мыши и открою в новом окне, он перейдет по URL, указанному вякорный тег href.Я хочу, чтобы он пошел по URL-адресу, указанному в JavaScript.

Есть ли способ сделать это?

Заранее спасибо

Ответы [ 5 ]

4 голосов
/ 13 октября 2010

Все, что вам нужно, это обработчик mousedown, чтобы подделать их ...

<a href="http://example.com"
   onmousedown="this.href2 = this.href;
                this.href = 'http://url-i-want-to-hide.com/';"
   onmouseout="if(this.href2) this.href = this.href2;">Test</a>

А вот и живая демоверсия , которая работает.

2 голосов
/ 13 октября 2010

Однако, если я щелкну правой кнопкой мыши и открою в новом окне, он перейдет по URL, указанному в теге привязки href.Я хочу, чтобы он шел по URL, указанному в javascript.

Нет, но вы можете использовать JS, чтобы установить ссылку href на скрытый URL-адрес после загрузки документа (или в onfocusи onhover события ссылки, хотя это выглядит довольно запутанно и неполно).

<a onfocus="this.href='hidden_url'" .....>

это способ, которым Google использует для подсчета исходящих ссылок со страницы результатов поиска.

1 голос
/ 21 июля 2013

Как насчет хранения реальных URL-адресов в базе данных и вызова их в php?

www.yourwebsite.com/url.php?id=3

url.php // что-то вроде

$query = "SELECT * FROM `urls` WHERE `id` = " . intval($_GET['id']);
$row = mysqli_fetch_assoc($query);

header ("location: $row['url']");
1 голос
/ 13 октября 2010

Вы не можете сделать это. Щелчок правой кнопкой мыши использует истинную привязку, тогда как вы переопределяете функциональность щелчка привязки с помощью JavaScript. Немного обманчиво, не так ли?

0 голосов
/ 13 октября 2010

РЕДАКТИРОВАТЬ: Может быть, я не был ясен ... извините.Использование «#» не позволит им открыть другую страницу в новом окне.Это может не сработать в вашей ситуации, и я не знаю, пытаетесь ли вы добиться чего-то с помощью SEO, скрыв URL.Мое решение практически такое же, как то, что вы делаете в настоящее время, за исключением "#" в href, и я просто предпочитаю, чтобы window.location был заключен в функцию .... личные предпочтения.*

<script language="javascript">
   function SendToUrl(){
       window.location='http://url-i-want-to-hide.com/'
    }
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...