Это ужасный и уродливый хак, но вы можете сделать что-то вроде этого: вместо перемещения самого элемента ссылки или чего-то внутри него, переместите отдельную ссылку с тем же текстом, который вы размещаете в том же месте. Конечно, вам также придется скрыть фактическую ссылку. Требуется много дополнительной разметки, и перемещение может быть сделано только в JavaScript, но, по крайней мере, это может быть сделано и работает.
HTML:
<span class="link_container"><a href="#" class="main"><span>Click me</span></a>
<span class="replacement"><a href="#" class="aux"><span>Click me</span></a></span></span>
CSS:
.link_container { display: inline-block; position: relative; }
a.main { display:inline-block; position: relative; z-index: 2; }
a.main span { position: relative; top: -1000px; }
.link_container span.replacement { position: absolute; left: 0; top: 0; z-index: 1; }
.link_container span.replacement span { display: inline-block; background-color: #fab; }
.link_container span.replacement span.offset { position: relative; left: 5px; top: 5px; }
JS, который перемещает текст при каждом нажатии:
$(document).ready(function() {
$("a").click(function() {
$("span.replacement span").toggleClass("offset");
$("p").text($("p").text()+" clicked!");
return false;
});
});
http://jsfiddle.net/Vfc5r/36/
Протестировано в Chrome и IE8. Chrome реагирует на ссылку .main, а IE8 на ссылку .aux. Возможно, это не исправляет проблемы в браузерах, которые по-прежнему реагируют на перемещенную ссылку, но является улучшением в браузерах, которые реагируют на статическую ссылку.