2012-04-15 1 views
0

사용자의 브라우저에서 자바 스크립트를 사용하도록 설정하면 '내 프로필'메뉴 링크를 맞춤 URL로 리디렉션하려고합니다. 나는 이미 동적 함수 getNewURL()을 만드는 사용자 정의 URL을 코딩했으며 연결은 정상적으로 작동합니다. 문제는 Chrome에서 자바 스크립트를 사용하도록 설정 한 경우에도 모든 기본 예방 코드가 있음에도 불구하고 href의 기본 페이지가로드된다는 것입니다. 나는 이것에 시간을 보내고 있었고, 문제가 무엇인지 알 수 없다. 어떤 도움이라도 대단히 감사하겠습니다. 당신이 정의자바 스크립트의 기본 이벤트 방지가 작동하지 않습니다.

function getNewURL(e) ... 
+0

당신의 e.preventDefault이 e.stopPropagation에 대한 검사 안에이어야한다. 그래서 당신이 파이어 폭스가 아니라면 그렇게하지 않을 것입니다. if 문 밖으로 이동하면 크롬으로 작동합니다 – Ryan

+0

그게 좋겠다고 생각했지만 슬프게도 그렇지 않았습니다. 기본 예방은 여전히 ​​작동하지 않습니다. – zeqof

+0

'init' 메소드를 어디에서 호출하는지 알지 못합니다. –

답변

0

전자는 무엇을 작동하려면 매개 변수를 추가하는 것을 잊었다처럼

<head> 
<script type="text/javascript"> 
<!-- 
function init() { 
    document.getElementById('profile').onclick=getNewURL; 
} 

window.onload=function(){ 
init(); 
} 



function getNewURL(e) 
{ 
    if(!e) e = window.event; 
    var a = 'http://www.google.com/'; 
    var b = 'advanced_search?hl=en';//this will actually be a dynamic wikispaces 
      //variable - the username. 
    var url = a+b; 

    window.location.href = url; 

    //Over-riding default action 
    //e.cancelBubble is supported by IE 
    e.cancelBubble = true; 
    e.returnValue = false; 

    //e.stopPropagation works only in Firefox. 
    if (e.stopPropagation) { 
     e.stopPropagation(); 

    } 
    e.preventDefault(); 
    return false; 
} 
//--> 
</script> 
</head> 

<body> 
<div id="menu"> 
<ul> 
    <li><a href="http://www.google.com/" id="profile">My Profile</a></li> 
</ul> 
</div> 
</body>   
+0

이 (가) var 제거를 시도했지만 기본 페이지가 계속로드됩니다. – zeqof

+0

음, 실제 코드에서 이미 'e'가있는 문자가 – epascarello

+0

이상이었습니다. – zeqof

3

이 보인다?

function getNewURL() 
{ 
    if(!e) var e = window.event; <-- 

function getNewURL(e) 
{ 
    if(!e) e = window.event; 
+0

Woops..typo. 나는 나의 실제적인 정의 안에 e을 가지고 있었다. 아직도 작동하지 않았다. – zeqof