2011-01-27 7 views
4

div가 하나 있는데, 안에는 a가 있습니다. div를 클릭하고 a와 동일한 url을 따르기를 원합니다. 이것은 HTML입니다 :IE7/8에서 window.location이 올바르게 작동하지 않습니다.

<div class="overview white getchildurl"> 
    <p class="w70"> 
    05-02-2011 
    </p> 
    <a class="button" href="details/">Details</a> 
    <span class="clear"></span> 
</div> 

나는이 스크립트가 :

$('.getchildurl').each(function() {  
    $(this).click(function() { 
     var href = $(this).children('a').first().attr('href'); 
     window.location = href; 
    }); 
}); 

이 IE7과 IE8에서 파이어 폭스 3.6, 크롬, 사파리에서 작동하지만 없음. 페이지를 다시로드하지만 같은 페이지에 머물러 있습니다. 나는 var href를 검사했다, 그것은 적당한 url을 가지고있다. 그러나 거기에 가지 않는다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

감사합니다.

편집 : 절대 URL로 설정하면 효과가 있습니다. 이 새로운 스크립트입니다

$('.getchildurl').each(function() {  
    $(this).click(function() { 
     var href = $(this).children('a').first().attr('href'); 
     var host = window.location.hostname; 
     window.location = 'http://' + host + '/' + href; 
    }); 
}); 
+0

'href' 속성을 명시 적으로 설정하십시오. 'window.location.href = href; ' – jAndy

+0

window.location.href가 작동 할 수도 있습니다. ! –

+0

저의 작품 : http://jsfiddle.net/ACaKu/ 거기 가서 확인해 주시겠습니까? 시도 할 몇 가지 사항 : "details /", location.href = href'에서 후행 슬래시를 제거하고 절대 경로를 사용하십시오. 'javascript : window.location = 'details /';를 입력하면됩니다. (0);'URL 바에서 –

답변

3

다른 답변이므로 다른 답변으로 게시하고 있습니다. HTML과 CSS로 작업하는 대신 JavaScript로 문제를 해결하는 방법.

표시하고 만드는 자바 스크립트를 변경해보십시오 확인 값은 그들이 hrefhref 길이를 표시합니다
$(this).click(function() { 
    var href = $(this).children('a').first().attr('href'); 
    alert(href) 
    alert(href.length) 
    window.location = href; 
}); 

입니다 생각합니다. 길이가 일치하는지 확인하십시오. 길이가 너무 길면 숨겨진 문자가 있음을 의미합니다.

문제가 구문 때문인 것으로 판단되면 JavaScript로 많은 URL 수정/변환을 수행 할 수 있습니다. 하나는 또한

$(this).click(function() { 
    var href = $(this).children('a').first().attr('href'); 
    window.location = href.replace(/\/$/, ''); 
}); 

와 함께 할 수있는 경우 예를 들어, 후행 슬래시를 제거하는 URL은 그 문제가 해결됩니다 어떤 경우 자바 스크립트를 사용하여 절대 URL로 변환 할 수 있습니다. 그리고 다른 성가신 또는 심지어 보이지 않는 문자는 제거되거나 대체 될 수 있습니다.

인터넷에 우리가 액세스 할 수있는 웹 페이지을 게시 할 수 있습니까? 컴퓨터에 복사하고 브라우저에서 볼 수있는 HTML 파일을 게시 할 수 있습니까? 다른 질문에 대한 귀하의 의견은 어떤 종류의 XHTML의 엄격한 DOCTYPE이 있음을 알려줍니다. 우리 중 한 명이이 문제를 끝까지 해결할 수 있다면 해결 될 가능성이 더 큽니다.

+0

절대 URL이 작동하도록 만들어 줘서 고마워! –

3

내가 내 댓글에서 언급 한 바와 같이, 나는 그것을 (IE7 + 8은 .location 개체를 처리하는 방법) 약 100 % 확실하지 않다, 그러나 결국 그것은 단지 객체입니다. 이 질문에 정확히

window.location.href = href; 
+0

시도해 볼만한 가치가 있지만 문제가되는 것을 본 적이 없습니다. –

+0

이미 시도했지만 차이가 없습니다. –

0

아니 직접적인 대답하지만이 개 제안

  1. 그냥 시도 할 수 있습니다

    봅니다 명시 적으로 location 객체 내에서 href 속성을 설정하려면 jQuery가 처리 할 수 ​​있는지 확인하기 위해

    $(this).children('a').first().click() 
    

    편집 :이

  2. 이 또한 그냥 style="display: block; text-decoration: none"와 함께 <a 태그에 전체 <div을 할 수 있습니다 문제를 해결할 수 없습니다. 글꼴 색과 밑줄을 사용하여 텍스트를 원하는 모양으로 만들 수 있습니다. 또한이 솔루션에는 JavaScript가 필요하지 않습니다. 또한 모든 div 쇼를 a 또는 nothing 대신 집중된 것으로 표시합니다.

+0

1. 깨끗한 해결책이라고 생각하지 않습니다. 2. 이것은 옵션이 아니므로 예제의 HTML을 줄였습니다. 사실 div 안에는 더 많은 블록 요소가 있습니다. 즉, 내부의 모든 블록 요소를 현재 범위를 포함하여 범위로 변경해야한다는 것을 의미합니다. 그게 큰 혼란을 만들 것입니다. –

+0

1. BTW를 사용하지 않았습니다. –

+0

@Gregory : OK, item 2에 대해서 : 2.'div's,'p's 및 다른 블록 태그는 바깥쪽에 display : block을 사용하는 한 a 내부에서 괜찮습니다. 더 이상 클릭 동작을 처리하지 않기 때문에 내부의 a가 u로 변경 될 수 있습니다. 그러면 모양이 좋을 것입니다. 바깥 쪽은 클릭 동작을 처리합니다. –

1

주제가 오래되었지만 쓸모가 없습니다. 나는 지금 막 동일한 문제가 있었다.

window.location = href; 

그런 다음 다른 명령을 입력하면 문제가 없습니다.

window.location = href; 
return false; 

이 URL은 올바른 URL로 리디렉션됩니다. 희망은 다른 사람들이 같은 문제를 겪을 수 있기를 바랍니다.

관련 문제