Установка атрибута href заменяет текст ссылки - PullRequest
1 голос
/ 27 сентября 2011

РЕДАКТИРОВАТЬ: я не говорю об отображении строки состояния, я говорю о тексте, который вы нажимаете, чтобы перейти по ссылке. / EDIT

Я просмотрел несколько похожих постов и не нашел ответа. У меня есть ссылка, которую я хочу отобразить.

www.mylink.com

Я хочу, чтобы ссылка на ссылку менялась при каждом нажатии на ссылку.

HREF = "www.mylink.com?R=340978"

Строка запроса меняется на случайное число после каждого клика, чтобы браузер не кэшировал страницу. Ожидается, что страница будет часто меняться и будет часто просматриваться для оценки этих изменений.

Так что я хочу, чтобы люди видели "www.mylink.com", но ссылку, ведущую на "www.mylink.com?R=34532", я думал, что достигну этого с помощью события onclick, которое добавит новое случайное число и установите атрибут href для новой ссылки, однако это также приводит к изменению отображаемого текста.

<code><script type="text/javascript">

var baseLink = "http://myDevLink/library/ea26098f-89d1-4305-9f75-afc7937f8336/25/test/036b602b-0bde-e011-957b-1cc1dee8bacd.html";
var link = "";

// Prime the link
$(document).ready(function() 
{
    NewRandomParam();
});

function NewRandomParam()
{
    // Make sure one of the warning messages isn't displayed instead of the link        
    if (document.getElementById("link") != null) 
    {
        // Add a random number param to the query string to prevent the user from opening a cached version of the page
        link = baseLink + "?R=" + Math.floor(Math.random() * 1000000);
        document.getElementById("link").setAttribute("href", link);
    }
}

</script>

<body>

<div id="divContent" style="display:inline; border:0px" class="tab">
<pre style="margin-top: 0;" >
<font face="tahoma">
<a href="" id="link" onclick=NewRandomParam(); target="_blank">http://myDevLink/library/ea26098f-89d1-4305-9f75-afc7937f8336/25/test/036b602b-0bde-e011-957b-1cc1dee8bacd.html</a>
</font>

Как видно из приведенного выше кода, нет строки запроса на то, что должно отображаться, однако при просмотре страницы значение href отображается вместе со строкой запроса. Если я делаю вид источника, правильный URL-адрес есть и должен отображаться, но это не так.

Пожалуйста, просветите меня, где я тупой.

Ответы [ 3 ]

2 голосов
/ 27 сентября 2011

Решением было сочетание предложенных здесь вещей плюс необходимость сброса текста ссылок до того, что я хотел. Вот что сработало.

<script type="text/javascript">

var baseLink = "<%= this.link %>";
var link = "";

$(document).ready(function () 
{
    // Add a timestamp param to the query string to prevent the user from opening a cached version of the page
    $('#link').mouseenter(function () 
    {
        var date = new Date();
        link = baseLink + "?Timestamp=" + date.getTime();
        $("#link").attr("href", link);
        $("#link").text(baseLink);
    });

});

</script>

Спасибо всем вам.

0 голосов
/ 27 сентября 2011
<script type="text/javascript">
   $(document).ready(function() {

      var baseLink = "http://myDevLink/library/ea26098f-89d1-4305-9f75-afc7937f8336/25/test/036b602b-0bde-e011-957b-1cc1dee8bacd.html";
      var link = "";

      $('#link').mouseenter(function() {
         link = baseLink + "?R=" + Math.floor(Math.random() * 1000000);
         $("#link").attr("href", link);
      });
   });
</script>
0 голосов
/ 27 сентября 2011

Случайные числа здесь не очень хорошая идея. Всегда есть шанс получить дублированный номер. Просто используйте date.getTime(), который должен быть "случайным" достаточно для ваших целей.

Изменение href НЕ должно изменять текст в ссылке. Иногда это один и тот же текст, но это происходит путем помещения одной и той же информации в двух местах (внутри атрибута href) и в виде текста внутри самого тега <a>linkname</a>. Изменение одного никогда не должно влиять на другое, если только у вас нет другого кода, который поддерживает синхронизацию.

Если вы хотите изменить то, что отображается в строке состояния окна при наведении ссылки, удачи. во многих браузерах есть механизмы, предотвращающие такую ​​путаницу, поскольку спамеры и мошенники сильно злоупотребляли изменением текста в строке состояния.

...