К сожалению, я работаю с некоторым сторонним javascript, который вставляет ссылки на мои страницы. Вместо того, чтобы просто использовать эти ссылки как есть, я хочу использовать прокси-элементы, которые при нажатии на них запускают событие click на сторонних ссылках.
Сторонние ссылки javascript связывают атрибут href, например:
<a id="horribleLink" href="javascript:doSomething()">Click me</a>
Мой прокси-элемент выглядит следующим образом:
<button rel="horribleLink" class="linkProxy">No, click me</button>
И немного jQuery'd javascript, чтобы связать их вместе:
$('button.linkProxy').click(function(){
$('#' + $(this).attr('rel')).click();
});
Теперь это отлично работает, если сторонняя ссылка просто стандартная ссылка ( немного менее ужасная onclick (<a id="horribleLink" href="#" onclick="location.href='http://www.google.com'; return false;">Click</a>
) или<a href="#" id="horribleLink" onclick="doSomething()">Click</a>
), но когда javascript находится внутри атрибут href, запуск 'click' ничего не делает.
Может ли кто-нибудь сказать мне, почему, и если есть разумное обходное решение?
Обновлено. Как утверждает Millimetric, основная причина заключается в том, что браузеры предотвращают "подделку кликов" на якорях - я удалил пример "стандартной ссылки", так как эта другая ситуация, которая не Работа. Обработчик onclick действительно работает, как и следовало ожидать.