많은 프레임워크에는 부모-자식 관계가 있어 작동하기가 매우 어렵습니다. 많은 학생들이 종종 다음과 같은 비참한 코드를 가지고 있습니다.
window.parent.document.getElementById("main")
.contentWindow.document.getElementById('input').value =
document.getElementById ('myIframe')
.contentWindow.document.getElementById('s0').value;
사실 이 문제는 window.top이라는 고정된 창이 있습니다. 프레임워크 애플리케이션에서 데이터를 이 페이지에 캐시하면 하위 페이지가 어떻게 변경되든 그 아래의 모든 프레임을 얻을 수 있습니다. 쿠키나 HTML5 로컬 데이터베이스 전략을 사용할 필요가 없습니다. 각 페이지에 다음 내용이 포함된 js 파일을 참조하면 됩니다.
var share = {
/**
* 크로스 프레임 데이터 공유 인터페이스
* @param {String} 저장된 데이터 이름
* @param {Any} 저장할 모든 데이터 (이 항목이 없으면 쿼리된 데이터가 반환됩니다. )
*/
data: 함수(이름, 값) {
var top = window.top,
cache = top['_CACHE'] || {};
top['_CACHE'] = 캐시
반환 값 ? 캐시[이름];
/**
* 데이터 공유 삭제 인터페이스
* @param {String} 삭제된 데이터 이름
*/
removeData: 함수(이름) {
var 캐시 = window.top['_CACHE']
if (cache && 캐시[ 이름]) delete 캐시[이름]
}
};
단 몇 줄의 이 방법을 사용하면 각 프레임 페이지에 대해 모든 유형의 데이터를 공유할 수 있습니다. 페이지 이름과 관련이 있으며, 레벨은 관련이 없습니다. 어느 날 프레임 페이지 레벨이 수정되더라도 전혀 걱정하지 않으셔도 정상적으로 작동됩니다.
예를 들어 페이지 A에 공유 데이터를 저장할 수 있는 경우:
share.data('myblog', 'http://www.jb51.net')
share.data('editTitle', function (val) {
document. title = val;
})
그런 다음 프레임 페이지는 페이지 A의 데이터를 무작위로 가져옵니다.
alert('내 블로그 주소는 ' share.data('myblog');
var editTitle = share.data(' editTitle');
editTitle('데이터를 얻었습니다');
그렇습니다.
artDialog.