2011-02-05 3 views

답변

9

window.location 개체를 사용하여 위치에 대한 속성을 가져올 수 있습니다. 주목할만한 특성은 다음과 같습니다

  • window.location.href - 현재 페이지의 전체 URL을 반환
  • window.location.hostname - 어떤을 포함하여 반환 단지 호스트 이름 (도메인 이름, 하위 도메인)
    • 예 : www.google.com
  • window.location.pathname - "?"를 반환 단지 경로 (일부는 시작 쿼리 문자열 (URL의 일부를 포함하는 호스트 이름/도메인을 다음 아니지만) 또는 해시 모든 일이 잘 작동하지만 /subdir/subpage.html

, 나는 다른처럼 (추천 : 예 (A "#"로 시작하는 URL의 일부))

  • s는 언급했다)이 서버 쪽을하는 것이 더 낫다. 서버는 대개 클라이언트보다 이처럼 좋은 기능을 수행 할 수 있습니다.

    또한 하나의 중앙 파일에 모든 JS 코드가있는 경우 서버 (페이지)에 직접 이와 같은 내용을 추가하여 해당 페이지의 이벤트를 트리거 할 수 있습니다.이 이벤트는 JS보다 안정적 일 수 있습니다 스니핑 위치 :

    <script type="text/javascript"> 
    // jQuery example 
    $(document).ready(function() { 
        // Run function that is specific for this page 
        MyNamespace.initHome(); 
    }); 
    </script> 
    
+1

작성하신 내용이 맞지만 브라우저에서 캐시 된 단일 JS 파일을 페이지 당 제공되는 맞춤 JS보다 서버 및 사용자 성능에 일반적으로 더 좋게 사용하는 것이 좋습니다. – Phrogz

+1

사실, 특히 귀하의 사이트가 많은 JS를 사용하는 경우에는 그렇습니다. 그러나 이것이 JS의 작은 비트 일 뿐이고 "글로벌"JS 파일이없는 경우 일반적으로 서버 측 감지가 더 나은 선택입니다. 나는 zmol이 자신의 질문에 글로벌 JS 파일을 가지고 있다는 것을 암시 해 왔기 때문에 귀하의 추천이 더 나을 것이라고 생각합니다. – jhartz

+0

나는 대답 할 수있는 또 다른 아이디어를 반영하여 - 모든 JS를 하나의 파일에 담아 (당신이 추천 한 것처럼) 단지 1 ~ 2 줄의 코드를 서버의 실제 페이지에 추가하여 특별한 것을 방아쇠를 당깁니다. – jhartz

0

귀하의 자바 스크립트는 window.location을 사용하여 현재 URL을 얻을 수 있습니다.

alert(window.location); 
2

서버 측에서 이것을 알아 내고 올바른 기능을 호출하거나 페이지에 따라 올바른 스크립트를로드하는 것이 더 좋을 것이라고 생각합니다. 서버 측은 대개 현재 페이지가 어쨌든 무엇인지 잘 알고 있습니다.

2

as ClosureCowboy said을 읽을 수 있지만 그 반대입니다. 일반적으로 JavaScript 파일이 필요 없다는 것을 알고 있으면 페이지에 포함시키지 마십시오.

5

각 페이지에 대한 <body> 요소에 독특한 id 속성을 넣어, 그리고 JS는 무엇을해야하는지 결정하기 위해 그것을 사용합니다.이것은 내가 기본적으로 (이 많은 작은 JS 파일을 연결하면) 내 하나의 축소 된 파일에 보이는 것처럼 것입니다 :

jQuery(function($){ 
    if (!$('body#home').length) return; 
    //... code specific to the home page 
}); 

jQuery(function($){ 
    if (!$('body#contact').length) return; 
    //... code specific to the contact page 
}); 

// etc. for each page 

을하지만 당신은 쉽게로보다 효율적인 하나의 파일을 작성할 수 있습니다

jQuery(function($){ 
    if ($('body#home').length){ 
    //... code specific to the home page 
    } 
    if ($('body#contact').length){ 
    //... code specific to the contact page 
    } 
}); 
+0

두 번째 코드 블록이'body '의 ID를 한 번 가져온 다음'if' 블록이 각 체크에서 본문의 ID를 가져 오는 대신 해당 변수를 확인할 수있는 것이 더 효율적입니까? – sb89

+0

@ sb89 신경 쓰면 테스트하고보고하십시오. 내 아주 아주 강한 추측 : 어떤 방향 으로든 속도의 차이가 나는지간에 눈에 띄지 않으며 헤아릴 수 없을 것입니다. – Phrogz

1

다음은 각 페이지마다 고유 한 쿠키를 설정하는 데 사용한 코드의 일부입니다. 당신이 원하는 것을 정확하게 얻기 위해서는 잘 작동해야합니다. 스위치를 통해 다른 페이지에 대한 다른 액션을 생성하거나 간단한 if 문을 사용하여 홈 페이지에서만 코드를 실행할 수 있습니다.

var sPath = window.location.pathname; 
var sPage = sPath.substring(sPath.lastIndexOf('/') + 1); 
console.log(sPath); 

console.log를 추가하여 Firebug Console에서 페이지를 호출하는 것을 볼 수 있습니다. 팝업으로 바꾸려면 경고로 변경하십시오.

2

는 모든 페이지 (어쨌든 캐시을)에로드 할 수 있도록, 하나의 파일에 JS 코드를 모두 유지하지만, 여기 캐치 :

전화 당신이 그 (것)들에게을 필요로하는 페이지에서 을 필요로하는 기능

JS 파일의 "나는 어떤 페이지입니까?"논리를 뒤집어 쓰려고합니다.

관련 문제