알았어.이 질문이 많이 제기되었지만 해결 방법이 없다고 생각합니다. 여기 상황이 있습니다. 기존 사이트에 추가해야하는 웹 페이지가 있는데이 사이트는 손댈 수없는 마스터 페이지를 사용합니다. body 태그에 액세스 할 수 없기 때문에 javascripts.onload를 사용하도록 제한됩니다.windows onload가 외부 스크립트에서 실행되지 않음
내 페이지에서 다른 모든 외부 파일 아래 머리에 내 외부 .js 파일을 연결했습니다. 다음은 내 .js 파일의 예입니다.
var myobj = null;
(5 or so functions that work properly. Mainly just toggles that show and hide divs. none touch the onload)
function load(){
myobj = document.getElementById("my_element");
alert("test");
}
window.onload = load;
시도해보십시오. 경고를받지 못해로드 기능이 실행되지 않습니다. 나는로드 기능의 첫 번째 줄을 주석 처리하고 경보 만 표시하고 아직 아무것도 표시하지 않았습니다. 주변을 둘러 보면서 나는 성공하지 못하게하려고 또 다른 방법을 찾았습니다. 다른 모든 것은 내가 window.load를 제거하고 이것을 추가 한 것을 제외하고는 동일합니다.
function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
} else {
window.onload = function() {
if (oldonload) {
oldonload();
}
func();
}
}
}
addLoadEvent(load);
addLoadEvent(function() {
/* more code to run on page load */
alert("hello2");
});
이 기능에서는 경고가 발생하지 않습니다. 나는 또한 작동하지 않는 기능 외에서 경고를 시도했다. 내가 사용하고
브라우저는
당신이 더 많은 정보를 필요로하는 경우 알려줘 IE 8.0.7600.16385 및 크롬 21.0.1180.60입니다.
오, 사이드 노트로 jquery 나 다른 자바 스크립트 라이브러리를 사용할 수 없습니다. 가능한 한 빛을 유지하려고합니다. 이 페이지는 IE8에서 작동해야합니다. 즉, 현재 지원되는 브라우저 만 지원됩니다. Chrome에서도 잘 작동한다면 좋을 것입니다.
편집 내가 완전히 잘못된 방향으로 가고있는 경우, 내가하려는 것은 내가 가지고있는 마지막 요소를 추적하는 것입니다. 본질적으로 2 개의 열이있는 페이지가 있고 왼쪽은 메뉴이고 오른쪽은 내용입니다. 콘텐츠는 한 번에 하나의 카테고리 만 표시되는 div에 모두 배치됩니다. 그것이 작동하도록되어있는 방식은 메뉴 범주를 클릭하면 이전 내용을 숨기고 새로운 내용을 보여줍니다.
내 콘텐츠 클래스를 display : none으로 설정했습니다. start_content ID가 display : block;으로 설정되도록하십시오. Javascript가해야 할 일은 start_content 객체로 내 글로벌을 초기화하는 것입니다. 메뉴를 클릭하면 obj.style.display = 'none'을 수행 한 다음 새로운 obj가 display = 'block'으로 설정됩니다. 그런 다음 새 obj를 가져 와서 내 전역 변수에 배치하여 다음 메뉴를 클릭 할 때 변경됩니다.
여기서이 가진 문제는 토글 기능 들어가면 prevContent가 불명 인 것을 온로드 기능
var prevContent = document.getElementById("start_content");
function toggle(id) {
prevContent.style.display = "none";
var content = document.getElementById(id);
content.style.display = "block";
prevContent = content;
}
임의없이 일례이다. 나는 머리에 this.js 파일을 연결하고 페이지가 아직 내 start_content를로드하지 않았기 때문에 이것이 가정되었다. 그래서 나는 널 전역으로 선언 한 다음 window.onload를 설정하는 이유를 변경했다. 생성 된 후 적절한 값을 설정하십시오.
'function load(); {'는 ** 구문 오류입니다 ** ** 실제 코드가 어떻게 보이는지는 아마 문제 일 것입니다. (세미콜론은 문제입니다.) 오류 콘솔은 물론 이것을 보여줍니다. – Pointy
@Pointy 아니, 그건 오타였다. 게시물을 수정하여 수정했습니다.도움이된다면 Chrome의 오류 콘솔에 "Uncaught TypeError : null의 속성 'style'을 읽을 수 없습니다."라는 메시지가 표시됩니다. 이는 메뉴에서 클릭을 한 다음 2 개의 함수를 통해 제대로 수행 한 다음 * prevContent.style .display = "none"; * null로 돌아 오는 변수입니다. – Tony318