2009-06-23 3 views
1

표준 3 프레임 레이아웃이 있습니다. 왼쪽에는 "fnav", 위쪽에는 "fheader", 헤더 아래에는 "fcontent"가 있습니다. 모든 파일은 로컬 하드 드라이브에 있습니다.Firefox 오류 : 권한이 거부 됨 Window.Document

이 오류 던지고 JS 함수이다 : fnav에 링크를

 
function writeHeaderFrame() { 
    try { 
     var headerFrame = window.top.frames['fheader']; 
     var headerTable = document.getElementById('headerTable'); 
     if (headerFrame && headerTable) { 
      headerFrame.document.body.style.backgroundColor = "Black"; 
      var headerFrameBody = headerFrame.document.documentElement.childNodes[1]; 
      headerFrameBody.innerHTML = headerTable.innerHTML; 
     } else if (headerTable) { 
      // there is a headerTable, but no headerFrame 
      headerTable.style.display = 'inline' // show the headerTable 
     } 
     } catch (e) { alert('from header.js, writeHeaderFrame(): ' + e.message); } 
} 

클릭을 (또는 처음 프레임을로드가) fcontent에 내용을로드 한 후 fcontent에서 JS 파일은 "헤더를로드 "프레임 ... 또는 어쨌든, 예정이다. 자바 스크립트는 처음에 잘 실행하지만 링크를 클릭 할 때마다 나는 다음과 같은 오류 얻을 :

Permission Denied To Get Window.document

나는 이유를 확인할 수 없습니다 생각합니다. 모든 제안을 부탁드립니다.

답변

1

분명히 문제의 사용자가 다음 설정을 "false"로 변경하지 않고 설치를 업데이트했기 때문에 로컬 문서가 다른 모든 로컬 문서에 액세스 할 수 있습니다.

pref("security.fileuri.strict_origin_policy", true);

내 컴퓨터에서 오류를 복제 할 수없는 이유가 설명됩니다.

많은 도움을 주셔서 감사합니다.

3

먼저 링크를 클릭하면 실행중인 코드와 HTML을 게시하십시오.

두 번째로 입력 오류가 있었습니까? Window.document는 window.document 여야합니다. (소문자 w) 조금 어려운 말을하는 것 html로하지 않고 영업 질문

의 변화에 ​​

편집 응답,하지만 난 어둠 속에서 자상을 복용 한 경우에, 나는이 줄을 말할 것 :

headerFrame.document.body.style.backgroundColor = "Black"; 

이 오류의 원인입니다. headerFrame이 다른 도메인에 있고 보안상의 이유로 해당 프레임의 내용을 수정할 수있는 권한이없는 것 같습니다. 물론 다음 줄 중 일부는 같은 문제가 있습니다.

비슷한 케이스의 경우 http://userscripts.org/topics/25029http://www.webdeveloper.com/forum/showthread.php?t=189515도 참조하십시오.

모질라 개발 센터

Note: Firefox 3 alters the security for windows' documents so that only the domain from which it was located can access the document. While this may break some existing sites, it's a move made by both Firefox 3 and Internet Explorer 7, and results in improved security.

에서 편집 2

0

당신이 Firebug를 설치하고있는 라인 오류를 던지고 알아내는 해봤 (https://developer.mozilla.org/En/DOM/Window.document 참조)? 그 질문은 Firefox에서 태그가 붙어 있기 때문에 추측 할 수 있습니다.

이 자바 스크립트를 사용하여 템플릿 HTML 페이지를 게시 할 수 있다면 가장 유용 할 것입니다.

0

스크립트/프레임 페이지가 모두 동일한 도메인에 있습니까? 그렇지 않은 경우 예상됩니다. 동일한 창이 아닌 다른 창에서 window.document에 액세스 할 수 없습니다.

2

다른 원점에서 창이나 문서를 조작하려고하는 것 같습니다. HTML5 (및 모든 최신 브라우저, IE : D조차도)는 "동일 출처 정책"이라고 불리는 것을 시행합니다. 기본적으로 한 출처의 JS는 다른 출처의 문서 또는 창 DOM과 상호 작용할 수 없습니다.

원본은 무엇입니까?기본적인 수준에서 당신은 기원 도메인을 대체하고 거의 바로 수 있지만 규칙의 전체 집합

모든 점에서 파이어 폭스는 과거에 동일한 원산지 정책을 적용하지 않은 영역 중 하나를 강화했습니다.

관련 문제