최근 동료가 asp.net 2.0의 탐색 컨트롤 중 하나인 메뉴 컨트롤을 사용했는데 최근에 문제를 발견하고 이 컨트롤을 마스터 페이지에 배치했습니다
. 페이지가 로드되면 끝나지 않습니다. 메뉴를 빠르게 클릭하면 IE 관련 오류가 보고됩니다.
Google을 검색한 후 다음과 같은 오류가 많이 있습니다. 일부 사람들은 asp.net 메뉴를 사용할 때 비슷한 오류가 발생했습니다.
http://forums.asp.net/thread/1158791.aspx
http://forums.asp.net/thread/1159962.aspx
유사한 프로그램은 firefox로 탐색할 수 있지만 IE에서는 실제로 문제가 없습니다. 매우 일반적인 실수는 일반적으로 문서가 로드되지 않았고 스크립트가 문서 상태를 동적으로 수정할 때 발생합니다.
asp.net 메뉴의 경우 Asp.net이 여러 axd 파일을 동적으로 생성하는 코드를 살펴보았습니다. 사실, js 파일입니다.
if (!childFrame) {
childFrame = document.createElement("iframe");
childFrame.id = childFrameId;
childFrame.src = (data.iframeUrl ? data.iframeUrl : "about:blank");
childFrame.style.position = "절대";
childFrame.style.display = "없음";
childFrame.scrolling = "아니요";
childFrame.frameBorder = "0";
if (parent.tagName.toLowerCase() == "html") {
document.body.appendChild(childFrame);
}
또 다른 {
parent.appendChild(childFrame);
}
}
하하, 실제로 이 접근 방식은 엄격하지 않습니다. MS에서 작성한 코드는 때때로 일부 문제를 무시합니다.
문서가 아직 로드되지 않았는데
하하, 곧을 클릭하면
어떻게 될까요?이것은 동시성을 위한 기회가 될 것입니다. 이것이 IE가 오류를 보고하는 이유입니다.
다음에는 문서 상태 수정에 대한 동시성 제어가 어떻게 될까요?
1. 메뉴를 div에 넣을 수 있습니다. 먼저 가시성을 숨김으로 설정하세요.
2. 문서가 로드된 후 가시성을 표시로 설정합니다.
document.onreadystatechange=ShowMenu;
함수 표시메뉴()
{
if(document.readyState=="완료")
{
document.getElementById("DivOfMenu").style.visibility="visible"
}
}
그게 다야.
http://www.cnblogs.com/montaque/archive/2006/09/18/507639.html