여러 링크가있는 HTML 페이지가 있습니다. 링크를 여는 이벤트를 잡을 수있는 능력이 있습니까? 사용자는 링크를 클릭하거나 마우스 오른쪽 버튼으로 새 창이나 탭에서 링크를 열 수 있습니다.링크 열기를 어떻게 알 수 있습니까?
링크는 외부 리소스를 참조하며 해당 콘텐츠를 제어 할 수 없습니다.
여러 링크가있는 HTML 페이지가 있습니다. 링크를 여는 이벤트를 잡을 수있는 능력이 있습니까? 사용자는 링크를 클릭하거나 마우스 오른쪽 버튼으로 새 창이나 탭에서 링크를 열 수 있습니다.링크 열기를 어떻게 알 수 있습니까?
링크는 외부 리소스를 참조하며 해당 콘텐츠를 제어 할 수 없습니다.
, 내가 생각할 수있는 몇 가지 클라이언트 측 옵션이있다 ... 그런 짓을하는 자바 스크립트를 사용할 수 없음 이상적인 그 중 :
당신은 할 수 링크의 href
을 원하는 코드를 실행 한 javascript:
URL로 바꾼 다음 올바른 URL (location.href = "http://example.com"
)로 이동하십시오. 사용자가 마우스 오른쪽 버튼을 클릭하거나 새 탭을 클릭하거나 자바 스크립트가 비활성화 된 경우 깨지기 때문에 불쾌합니다.
<a>
의 클릭 이벤트에 이벤트 수신기를 추가 할 수 있습니다. 그러나이 작업은 오른쪽 클릭 -> 열림 또는 사용자가 탭 오버하고 Enter 키를 눌러 트리거되지 않습니다.
문서 자체에서 onunload
이벤트 처리기를 사용할 수 있지만 사용자가 어디로 가고 있는지 알려주지 않으며 사용자가 새 탭을 열면 작동하지 않습니다.
사용자가 탐색하는 위치 만 추적하려는 경우 서버 측 솔루션 만 사용할 수 있습니다. 사용자를 자신의 서버로 보내면 브라우저가 올바른 URL로 리디렉션되도록 HTTP 302 코드를 보냅니다. 물론 이것은 필요한 것보다 더 많은 인프라를 필요로합니다.
감사합니다. 나는 나의 일을 묘사하려고 노력할 것이다. 나는 서버에서 생성 한 여러 링크가있는 페이지가 있습니다. 사용자는 새 탭에서이 링크 중 일부를 열어보고 싶어합니다 (중요합니다 - 현재 페이지 상태를 잃고 싶지 않음). 사용자가 연 링크는 숨겨져 있어야합니다. 올바르게 이해하면 첫 번째와 두 번째 옵션은 '새 탭'에서 작동하지 않으므로 사용할 수 없습니다. 사용자가 새 탭에서 링크를 열고 현재 페이지를 열어두기 때문에 세 번째 옵션을 사용할 수 없습니다. 내 작업을 해결할 다른 방법이있을 수 있습니까? 흠 ... 내가 CSS를 사용하고 내 페이지의 모든 방문 링크를 숨길 수 있습니다 .... – demas
예, 'a : visited {display : none; }'. 이것은 여러 세션에서 지속될 수 있습니다. 원하지 않을 수도 있습니다. 또한,': visited'를 확인하는 것이 (약간 어색한) 사용자의 역사를 발견하는 방법이기 때문에 다른 브라우저의 개인 정보 보호 모드가 어떻게 영향을 줄지 확신하지 못합니다. – Nevett
는
var links = document.getElementsByTagName('a');
for(var i = 0; i< links.length; i++) {
links[i].onmousedown = function(e) {
console.log(this.href, this)
if ((e.which && e.which == 3) || (e.button && e.button == 2)) { // not sure about IE
alert('right click');
}
}
}
링크의 onclick 이벤트가 당신을 도울 수보십시오. – lavrik
은 이것을 위해 설계되었으며 마우스 오른쪽 버튼을 클릭해도 작동합니다 ... – dandavis