내 js 파일이 모든 페이지에로드됩니다. 일부 기능은 홈페이지 (http://site.com
)와 같은 특정 페이지에서만 실행됩니다. 자바 스크립트가 홈페이지인지 확인하기 위해 호출되는 페이지의 URL을 읽을 수 있습니까?단일 파일에서 사이트의 특정 페이지에 대한 사용자 정의 JavaScript 실행
답변
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>
귀하의 자바 스크립트는 window.location
을 사용하여 현재 URL을 얻을 수 있습니다.
alert(window.location);
서버 측에서 이것을 알아 내고 올바른 기능을 호출하거나 페이지에 따라 올바른 스크립트를로드하는 것이 더 좋을 것이라고 생각합니다. 서버 측은 대개 현재 페이지가 어쨌든 무엇인지 잘 알고 있습니다.
은 as ClosureCowboy said을 읽을 수 있지만 그 반대입니다. 일반적으로 JavaScript 파일이 필요 없다는 것을 알고 있으면 페이지에 포함시키지 마십시오.
각 페이지에 대한 <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
}
});
다음은 각 페이지마다 고유 한 쿠키를 설정하는 데 사용한 코드의 일부입니다. 당신이 원하는 것을 정확하게 얻기 위해서는 잘 작동해야합니다. 스위치를 통해 다른 페이지에 대한 다른 액션을 생성하거나 간단한 if 문을 사용하여 홈 페이지에서만 코드를 실행할 수 있습니다.
var sPath = window.location.pathname;
var sPage = sPath.substring(sPath.lastIndexOf('/') + 1);
console.log(sPath);
console.log를 추가하여 Firebug Console에서 페이지를 호출하는 것을 볼 수 있습니다. 팝업으로 바꾸려면 경고로 변경하십시오.
는 모든 페이지 (어쨌든 캐시을)에로드 할 수 있도록, 하나의 파일에 JS 코드를 모두 유지하지만, 여기 캐치 :
만 전화 당신이 그 (것)들에게을 필요로하는 페이지에서 을 필요로하는 기능
JS 파일의 "나는 어떤 페이지입니까?"논리를 뒤집어 쓰려고합니다.
- 1. 사용자 정의 Django 404 페이지에 대한 코드 실행
- 2. 특정 페이지에 대한 사용자 액세스 제어?
- 3. ASP.Net의 특정 페이지에 대한 사용자 정의 오류 처리
- 4. 단일 페이지에 trace.axd 사용
- 5. JavaScript : 특정 컨텍스트에서 코드 실행
- 6. Mozilla Firefox의 모든 페이지에서 사용자 정의 Javascript 실행
- 7. hudson 프로젝트 페이지에 대한 사용자 정의 링크 추가
- 8. javascript 파일에서 사용자 정의 XML 엔티티를 사용하는 방법
- 9. 사용자 정의 컨트롤에서 페이지에 스크립트 추가 .ASP.NET
- 10. 특정 동적 페이지에 대한 mod_rewrite
- 11. 사용자 컨트롤에서 부모 페이지에 대한 메서드 호출
- 12. 텍스트 파일에서 사용자 정의 태그 추출
- 13. 데이터베이스 디자인 : 특정 페이지에 대한 액세스 권한이있는 사용자
- 14. Joomla 1.5의 사용자 정의 구성 요소의 내부 페이지에 대한 링크
- 15. 사용자 정의 컨트롤에서 JavaScript 작성
- 16. JavaScript : 사용자 정의 팝업 창
- 17. 동적 데이터 웹 사이트의 사용자 정의 필터
- 18. Sharepoint의 VersionDiff.aspx에 대한 사용자 정의
- 19. ASP.Net을 사용자 정의 appdomain에서 실행
- 20. Wordpress에있는 사용자 정의 페이지에 php 요소를 추가하십시오.
- 21. 로컬 HREF에서 원격 Javascript 실행
- 22. 사용자 정의 위젯에 대한
- 23. Google 맞춤 검색 - 사이트의 특정 페이지에 대해서만 색인을 생성하십시오.
- 24. 외부 자바 스크립트 파일에서 사용자 정의 컨트롤에 clientid 가져 오기
- 25. 사전에 대한 사용자 정의 이터레이터?
- 26. 사용자 정의 메시지가 페이지에 표시되지 않습니다 (JSF)
- 27. 사용자 정의 소개 페이지에 스타일을 적용하려면 어떻게해야합니까?
- 28. window.onerror로 사용자 정의 javascript 예외 잡기 - IE에서
- 29. Piwik Analytics는 REST를 통해 특정 페이지에 대한 요약 통계를 가져옵니다.
- 30. asp.net 사용자 정의 웹 사용자 정의 - 버튼
작성하신 내용이 맞지만 브라우저에서 캐시 된 단일 JS 파일을 페이지 당 제공되는 맞춤 JS보다 서버 및 사용자 성능에 일반적으로 더 좋게 사용하는 것이 좋습니다. – Phrogz
사실, 특히 귀하의 사이트가 많은 JS를 사용하는 경우에는 그렇습니다. 그러나 이것이 JS의 작은 비트 일 뿐이고 "글로벌"JS 파일이없는 경우 일반적으로 서버 측 감지가 더 나은 선택입니다. 나는 zmol이 자신의 질문에 글로벌 JS 파일을 가지고 있다는 것을 암시 해 왔기 때문에 귀하의 추천이 더 나을 것이라고 생각합니다. – jhartz
나는 대답 할 수있는 또 다른 아이디어를 반영하여 - 모든 JS를 하나의 파일에 담아 (당신이 추천 한 것처럼) 단지 1 ~ 2 줄의 코드를 서버의 실제 페이지에 추가하여 특별한 것을 방아쇠를 당깁니다. – jhartz