2011-09-26 2 views
1

편집 : 상태 표시 줄에 대해 이야기하는 것이 아니라 링크를 클릭하기 위해 클릭하는 텍스트에 대해 이야기하는 것입니다./EDIThref 속성을 설정하면 링크 텍스트가 바뀝니다.

비슷한 게시물을 살펴본 결과 답변을 찾지 못했습니다. 내가 원하는 링크가 있습니다.

는 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의 값이 쿼리 문자열로 표시되는 페이지를 볼 때 표시해야하는지에 더 쿼리 문자열이 없습니다. 보기 원본을 작성하면 정확한 URL이 표시되고 표시되어야하지만 그렇지 않습니다.

나는 바보가되고있는 곳에서 나를 계몽 해주십시오.

답변

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를 사용하고 클릭 핸들러에서 위의 작업을 수행하는 것입니다. 내 테스트는 정상적인 클릭에 대한 href 속성을 변경하면 속도가 충분히 빠르다는 것을 보여 주므로 새 페이지가로드되기 전에 링크가 변경되지 않으므로 대신 mouseenter를 사용해 보았습니다.하지만 preventdefault와 함께 click 이벤트를 사용하는 것이 좋습니다. 어쨌든 문제가되지는 않을 것입니다. – adeneo

+0

클릭하면 현재 클릭이 아니라 다음 클릭으로 변경됩니다. 나는 이런 식으로 더 좋았지 만 페이지가로드되기 전에 첫 번째 임의의 숫자로 링크를 준비했습니다. 당신은 클릭하고 그 하나에 가면 새로운 링크를 생성합니다. – Justin

0

여기서는 임의 숫자가 좋지 않습니다. 항상 중복 된 전화 번호를 얻을 수있는 기회가 있습니다. 그냥 너의 목적을 위해 "무작위"이어야 date.getTime()을 사용하십시오.

href를 변경하면 링크 텍스트가 변경되지 않아야합니다. 그것들은 때로는 같은 텍스트이지만, 동일한 정보를 두 곳 (href 속성 내부)과 <a>linkname</a> 태그 내부의 텍스트에 넣는 것입니다. 하나를 변경하면 다른 코드에 영향을주지 않아야합니다.

링크 상태가 바뀔 때 창 상태 표시 줄에 표시되는 내용을 변경하려면 행운을 빕니다. 대부분의 브라우저는 스패머와 사기꾼에 의해 심하게 학대당한 상태 표시 줄 텍스트를 변경하기 때문에 처음부터 이러한 비웃음을 방지하는 메커니즘을 가지고 있습니다.

+0

더 나은 날짜를 사용하는 것이 좋다고 생각합니다. 제안 해 주셔서 감사합니다. 나는 href를 변경하는 것과 같은 것을 생각했지만, 분명히 무슨 일이 일어나고 있는지. 두 코드를 동기화 할 다른 코드가 없습니다. 위에 보여준 것은 페이지의 모든 코드입니다. 이 페이지의 유일한 목적은 해당 URL을 CRM 페이지의 iFrame에 표시하는 것입니다. 상태 메시지가 내가 변경하려고하는 메시지가 아닙니다. 아래 답변에 대한 내 의견을 참조하십시오. – 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

관련 문제