2017-09-23 3 views
0

자식 요소와 연결된 링크 사이에 관계가 있지만 부모 프레임에서 업데이트하는 기능이 손실됩니다. 이 코드를 사용하여 참조 문서를 호출합니다.자식 링크, 부모 참조 유지

function Open_Ref() { 
X = (screen.width - 900)/2; 
Y = (screen.height - 700)/2; 
settings = 'resizable=yes,scrollbars=yes,height=700,width=900,top=' + Y + ',left=' + X; 
theURL = '../dir/foo.htm#' + parent.MAIN.frame_id; 
Ref_Window = window.open(theURL, 'Ref', settings); 
Ref_Window.focus(); 
Ref_Window.moveTo(X, Y); 
} 

function Refresh_Ref() { 
theURL = '../dir/foo.htm#' + parent.MAIN.frame_id; 
if (Ref_Window != null) { 
Ref_Window.updateRef(parent.MAIN.frame_id); 
} 

이것은 참조 창을 열고 그 참조 내에 상위 프레임의 프레임 참조를 업데이트하기위한 코드가 포함되어 있습니다.

function updateRef(frame){ 
     window.location.hash=frame; 
} 

메인 프레임 호출에는 업데이트를 호출하는 setTimeout 함수가 있습니다.

setTimeout("Refresh_Ref()",1000); 

이 모든 것이 올바르게 작동하며, parent.MAIN의 프레임이 탐색되면 해당 프레임이 자식으로 업데이트됩니다. 내 문제는 참조 창 (기본적으로 원본 참조 자식과 중복)에서 링크 된 여러 개의 "개인 설정"참조가 있고, 이들을 호출하고, foo1.htm, foo2.htm 등을 호출하여 액세스 할 때 능력을 상실한다는 것입니다. foo.htm 파일을 다시 탐색 할 때에도 부모 프레임으로 업데이트 할 수 있습니다.

원래 Open_Ref() 함수는이 하나의 파일 만 호출한다는 것을 알고 있지만 여러 함수를 추가하려고 시도했지만 작동하지 않는 것 같습니다.

어떤 아이디어라도 함수를 실행하기 전에 어떤 foo.htm 파일이 열려 있는지 확인하기 위해 부울 문을 사용할 수 있습니까?

+0

죄송합니다. 세 번 읽었으며 필요한 사항을 파악하는 데 어려움이 있습니다 ... 내가 이해하지 못하는 것은 부모 데이터를 사용한다는 것입니다. 즉, 자녀 창에 있음을 의미합니다. 새창. 그 말은 적어도 세 개 이상의 윈도우가 있다는 뜻인가요? 자, 어떻게 서로 정확히 상호 작용합니까? 그리고 당신이 말하는 그 참조는 무엇입니까? 페이지? – Salketer

답변

0

죄송합니다. 그래서 다른 지역 스크립터의 도움으로 어제이 문제를 파악할 수있었습니다. 귀하의 질문에 답하기 위해,이 시간에 두 개의 창이 열리 며, 한 명의 학부모 (레슨 안내서)와 한 명의 아동 창 (참조 안내서)이 있으며,학과 수업 프레임을 탐색 할 때 자식을 새로 고침하여 프레임을 페이지 상단. 이제는 현재 프레임 (window.replace)에서 업데이트 할 별도의 (개인화 된) 참조 윈도우를 선택할 때 문제가 발생했습니다.

우리가 가진 문제는 body 태그에 자식에서 벗어날 때 자식에 대한 포커스를 취소하는 onunload 메서드가 있다는 것입니다. 일단 onunload 태그를 제거하면 부모로부터 포커스가 유지되므로 Refresh_Ref() 함수를 계속 실행할 수있었습니다. 이 함수는 null 윈도우도 찾고 있었기 때문에 오류가 발생 했으므로 참조 창을 닫으면 스크립트가 오류가 발생합니다. 이를 줄이기 위해 오류를 잡아 내고 창을 무시하기위한 catch를 만들었습니다.

걱정할 필요가 없습니다. 도와 주셔서 감사합니다 !!

관련 문제