2012-06-12 6 views
0

다른 자바 스크립트 파일과 프레임이있는 웹 사이트가 있습니다.JavaScript 변수 및 프레임의 범위

Permission denied to access property 'clickedNewForm' 
generalJavaScript.js()genera...ript.js (Zeile 11) 
[Bei diesem Fehler anhalten]  
top.window.clickedNewForm = false; 

잘못 무엇인가 generalJavascript.js에서 나는 다음과 같은 메시지를 볼 수 있습니다 파이어 폭스 - 콘솔에서이

console.log("BP0 - generalJavaScript.js eingebungen;"); 
top.window.clickedNewForm = false; 
function setClickedNewForm(booleanobj){ 
    console.log("BP5 - setClickedNewForm(); top.window.clickedNewForm: " + top.window.clickedNewForm + ";"); 
    top.window.clickedNewForm = booleanobj; 
    console.log("BP6 - top.window.clickedNewForm: " + top.window.clickedNewForm + ";"); 
} 
function getClickedNewForm(){ 
    console.log("BP7 - getClickedNewForm();"); 
    return top.window.clickedNewForm; 
} 

을 썼다? 내가 top-object에 전역 변수를 선언하면 모든 프레임에서 액세스 할 수있을 것이라고 생각했습니다.

UPDATE

가 :

BP0 - generalJavaScript.js eingebungen; 
genera...ript.js (Zeile 10) 
Permission denied to access property 'clickedNewForm' 
generalJavaScript.js()genera...ript.js (Zeile 12) 
[Bei diesem Fehler anhalten]  
parent.clickedNewForm = false; 
+0

프레임이 모두 동일한 도메인 (프로토콜을 포함하여 정확하게 동일한 도메인)에서 제공되고 있습니까? 그렇지 않으면 브라우저의 동일한 origin-policy가 변수에 대한 액세스를 차단합니다. – njr101

+0

네, SOP가 문제인 것 같습니다. – Jochen

답변

1

당신은 부모 프레임에서 접근 값의 부모 객체를 사용해야합니다 : 대신 top.window의 parent.myvar을 사용했는데, 불행하게도 아무것도 FF-콘솔, 변경되지 않습니다.

console.log("BP0 - generalJavaScript.js eingebungen;"); 
parent.clickedNewForm = false; 
function setClickedNewForm(booleanobj){ 
    console.log("BP5 - setClickedNewForm(); parent.clickedNewForm: " + parent.clickedNewForm + ";"); 
    parent.clickedNewForm = booleanobj; 
    console.log("BP6 - parent.clickedNewForm: " + parent.clickedNewForm + ";"); 
} 
function getClickedNewForm(){ 
    console.log("BP7 - getClickedNewForm();"); 
    return parent.clickedNewForm; 
} 
+0

여전히 동일합니다 ... 업데이트를 참조하십시오. 장군 ... ript.js (Zeile 12) BP0 - generalJavaScript.js eingebungen; – Jochen

+0

글쎄, 내가 말하고자하는 크로스 도메인 스크립팅이 아니 었는지 확인하십시오. 이 액세서는 항상 이진 형식을 게시하고 부모 프레임으로 처리 될 때 다시받는 데 사용됩니다. 크로스 도메인을 사용하는 경우 실패합니다 (예 : domain.com에서 액세스 한 myscripts.domain.com이 실패합니다). – Tschallacka