2011-09-28 3 views
3

오페라 (버전 11.5)에서만 발생하는 window.open에 문제가 있습니다. 페이지가로드 된 후 나는이 기능을 실행하면"오류 : ReferenceError : 보안 오류 : 보호 된 변수를 읽으려고 시도했습니다."쓰기 : Opera 11.5 및 window.open 및 document.write

function openpageopera() 
{ 
    var w = window.open("","_blank"); 
    try 
    { 
    w.document.write("<p>hello</p>world"); 
    w.document.close(); 
    } 
    catch(err) 
    { 
    alert("error:" + err); 
    } 
} 

지금, 그것은 완벽하게 작동, ERGO :

$(document).ready(function() { 
    openpageopera(); 
}); 

내가 구글, 야후, 또는 같은 URL을 개방하고있어 경우에도 작동 내 웹 서버의 웹 페이지.

그러나 HTML 단추와 같이 onclick 이벤트에 첨부하면 오류가 발생합니다.

<input type="button" value="Fails" onclick="openpageopera();"> 

특별히 실패한 것은 무엇입니까? 음, 페이지가 열리지 만 그것은 비어 있습니다. document.write가 작동하지 않습니다. 캐치는 다음과 같은 오류를 지적했습니다.

error:ReferenceError: Security error: attempted to read protected variable: write

html 버튼에서 이것을 실행하면 보안 오류가 발생합니다. 왜 이런 일이 발생하며 어떻게 해결할 수 있습니까?

도움 주셔서 감사합니다.

+1

나를 위해 실패하지 않습니다. (opera 11.51) –

+0

테스트 할 수 있도록 전체 코드를 붙여 넣을 수 있습니까? – user717236

+1

그녀의 위치 : http://jsfiddle.net/doktormolle/EePex/ –

답변

1

오페라 브라우저에서 모든 개인 정보가 삭제되어 작동했습니다. 그러나 페이지를로드 할 때마다 Shift 또는 Ctrl 키를 눌러 캐시를 지우도록했습니다. 캐시 문제이거나 완전히 다른 것입니다.

4

코드가있는 경우 설정이 document.domain 인 경우 상위 페이지의 보안 컨텍스트가 변경 될 수 있습니다. ""또는 about : blank를 열면 이 부모 보안 컨텍스트를 상속 받아야하고 document.write()이 작동해야합니다.하지만 오페라에는 과거에 몇 가지 버그가있는 것으로 알고 있습니다. (어디에서 document.domain이 현재 값으로 설정되었는지도 마찬가지입니다.) document.domain을 설정하면 빈 팝업으로 작업 할 때 문제가 발생합니다. 나는 그 버그가 11.50에서 고쳐 졌다고 믿는다. 그러나 당신이 비슷한 문제에 부딪쳤던 것처럼 보인다. 할 수 있으면 document.domain을 설정하지 마십시오.

이 문제가 다시 발생하면 알려 주시고 전체 코드를 보도록하겠습니다. 나는 모든 화신에서이 버그를 해결하고 싶다.

BTW, 플러그인에서 트리거 된 사용자 JS, 확장 및 JS도 document.domain과 함께 엉망이 될 수 있으므로, 방해.

+0

감사합니다. 나는 document.domain을 설정하고 있지 않다. CDN을 통해 jQuery를 사용하고 있습니다. 그래서, 그들이 그것을 조작하지 않는다면, 나는 그것을 전혀 사용하지 않을 것입니다. – user717236

+0

그런 경우 - 개인 정보를 삭제 한 후에 문제가 실제로 사라진 경우 캐시에 문제가있는 것 같습니다.필자는 이것을 본 적이 없으며 캐시 데이터가 어떻게 구성되어 있는지 거의 알지 못했지만 캐시 테이블의 오류로 인해 Opera가 페이지에 잘못된 보안 컨텍스트를 적용 할 수 있습니까? 이것은 매우 별난 .. : - / – hallvors