2011-09-26 49 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