프로그램

javascript pointer, window.open 부모/자식 값 바꾸기. 보안

(주)CKBcorp., 2011. 12. 26. 23:29
반응형



javascript 에서, 

1. 흔히 메뉴를 만들 때, 이미지 등을 넣고 클릭 이벤트를 걸면, 마우스 포인터가 손가락 모양으로 안 바뀐다.
이거, 마우스 스타일만 지정해 주면 되는데,
문제는 style="{ cursor:'hand'; }" 는 IE 에서만 먹는다는 것. 표준은  style="{ cursor:pointer; }"  인데, 문제는 검색은 hand 가 더 많이 나온다는 것. 

2. 자식 창에서 부모 창에 값을 전달할 때, window.open() 으로 자식 창을 열게 되면,
var t = window.open(); 하면 
부모창에서는 t.document.getElementById("") 와 같이 접근이 가능하고, 
자식창에서는 opener.document.getElementById("") 와 같이 접근이 가능하다.

그런데, 문제는 이거 로컬에서 그냥 테스트 해 보면 에러난다. 그것도 WebKit 계열 브라우저만.
이것은 보안 에러인데, 

 
Unsafe JavaScript attempt to access frame with URL
file:///C:/Users/디렉토리명/파일명1.html from frame with URL
file:///C:/Users/디렉토리명/파일명2.html. Domains, protocols and ports must match.
  1. 파일명.html:24Uncaught TypeError: Cannot read property 'frm1' of undefined
 

과 같이 나온다. 이게 나오는 원인은, 이전의 웹브라우저는 로컬 파일에 접근이 가능했는데 버전업 되면서, 로컬 파일 접근 권한을 까다롭게 줬나 보다. 그래서 이 경우, file:///C: ... 의 형식처럼 로컬 파일에서 접근하지 말고, "http://localhost/디렉토리명/파일명" 의 형식으로 접근하면 문제가 해결된다.

자세한 내용은 여기를 참조 :  http://stackoverflow.com/questions/2597979/accessing-and-modifying-tabs-opened-using-window-open-in-google-chrome 


이하는 인용
-----------------------------------

I also got this problem when using a local page using the file:// protocol (in Chromium 5.0.342.9 (Developer Build 43360) under Linux). The exact error message is:

Unsafe JavaScript attempt to access frame with URL about:blank from frame with URL file:///home/foo/bar/index.htm. Domains, protocols and ports must match.

Apparently the protocols don't match, but the good news is: when this page on a web server, Chromium also opens a new window as "about:blank", but it doesn't complain any longer. It also works when using a local web server accessed via http://localhost.


 
반응형