2011-09-26 66 views
1

编辑:我不是在谈论状态栏显示,我正在谈论你点击的文本来跟随链接。 /编辑设置href属性替换链接文本

我翻看了几个类似的帖子,没有找到答案。我有一个我想要显示的链接。

www.mylink.com

我要链接的href改变每一个链接被点击的时间。

HREF =“www.mylink.com?R=340978”

查询后,每串变成一个随机数单击以防止浏览器缓存页面。预计该页面将经常更改并经常查看以评估这些更改。

所以我想让人们看到“www.mylink.com”,但链接导致“www.mylink.com?R = 34532”我想我会实现这一点onclick事件,会增加一个新的随机编号并将href属性设置为新链接,但是这也会更改显示的文本。

<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> 
</pre> 
</div> 

</body> 
</html> 

正如你可以从上面的代码中看到,有什么要当我的看法是显示与查询字符串中的href的值的页面然而没有显示查询字符串。如果我做了一个查看源,那么正确的网址就在那里,应该显示,但不是。

请指教我愚蠢的地方。

回答

2

解决方案是这里提出的东西的组合,加上不得不重置链接文本到我想要它。这是什么工作。

<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

经过一番思考,我认为更好的方法是在链接上使用preventdefault,然后在click处理程序上运行一个上述功能。我的测试显示,在正常点击中更改href属性的速度不够快,所以链接在新页面加载之前不会改变,这就是为什么我尝试使用mouseenter来代替,但我认为使用click事件与preventdefault会更好,但如果它起作用,它可能会起作用,它可能不是一个概率,只是说;-) – adeneo

+0

点击是改变它为下一次点击不是当前。我喜欢这种方式更好,但在页面加载之前,我会首先使用第一个随机数来填充链接。你会点击并转到那个,然后它会生成一个新的链接。 – Justin

0

随机数在这里不是一个好主意。总是有机会获得重复的号码。只要使用date.getTime()这应该是“随机”足够你的目的。

更改href不应改变链接中的文本。它们有时是相同的文本,但是通过在两个地方(href属性内)和<a>linkname</a>标签本身中的文本放置相同的信息。更改一个不应该影响另一个,除非你有其他的代码保持同步。

如果您的意思是您希望改变链接悬停时窗口状态栏中显示的内容,祝您好运。大多数浏览器都有防止这种摆弄的机制,因为更改状态栏文本被垃圾邮件制造者和骗子严重滥用。

+0

我想我更喜欢使用日期。感谢您的建议。 我认为改变href的同样的事情,但是那是什么显然发生。我没有其他的代码可以同步这两个。我上面展示的几乎是页面上的所有代码。此页面的唯一目的是在CRM页面上的iFrame中显示该URL。 状态消息不是我想要改变的。看到我的评论以下答案。 – Justin

0
<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

这是一个改进,当页面第一次加载链接时显示正确而没有查询字符串参数,但是当您第一次将鼠标移到它上面时,查询字符串就会出现。 – Justin

+0

我不认为我真的理解这个问题,查询字符串不应该在悬停链接时显示在屏幕上,我看到你找到了答案,但仍然不明白为什么改变href属性会改变你的链接文本系统,因为它不应该那样做,并且在我的测试中,在更改hret属性之后不需要更改文本,在某处它肯定是一个奇怪的错误。 – adeneo

+0

我不太了解它,因为我不认为改变href也会改变文本。 – Justin