2010-12-15 11 views
1

저는 페이스 북에서 사용할 수 있도록 Chrome 용 그리스 몽키 스크립트 (드래그 앤 드롭)를 작성했습니다. 나는 Greasemonkey가 샌드 박스 화되어 있다는 것을 알고 있으며 적어도 브라우저가 브라우저에서 설정을 변경하지 않으면 Firefox가 실행되는 한 스크립트로 창을 닫을 수 없습니다. 그러나 대부분의 브라우저에서는 사용자 확인없이 부모 윈도우가 하위 창을 닫을 수 있습니다. 어쨌든 내 스크립트에서 창을 열고 HTML 객체에서 텍스트 조각을 잡고 페이지의 버튼을 눌러 창을 닫으려고합니다. 창을 여는Greasemonkey로 창 닫기

내 코드는 다음과 같습니다

function birthday(linkAddress) { 
var winNew=window.open(linkAddress, "_blank", "height=100", "width=100"); 
/*code to be run on page*/ 
    winNew.close() 
} 

창이 잘 열리지 만 나는 "정의의 '가까운'메소드를 호출 할 수 없습니다"라는 크롬에서 자바 스크립트 오류가 발생합니다. 나는 Greasemonkey sandboxing과 관련된 나의 객체에 문제가 있다고 가정하지만, 나는 무엇을 결정할지는 손실이다. Chrome의 Greasemonkey 스크립트를 사용하여 창을 닫을 수 있습니까? 사용 설정이 필요합니까? 아니면 내 코드가 틀린거야? 이 코드는 주 창 페이지의 함수에서 실행 중이며 스크립트에있는 함수와 동일하게 설정하면 페이지에 쓴 단추의 onClick 이벤트를 사용합니다. 또한 하위 페이지에서 DOM 요소에 액세스하기위한 모든 정보를 제공해 주시면 감사하겠습니다.

도움 주셔서 감사합니다.

(미안 프로그래밍 연습 중뿐만 아니라 아주 새로운 해요,이 내가 그리스 몽키 스크립트를 작성한 것은 이번이 처음이다)

답변

0

게시 코드의 조각이 불충분하고 일치하지 않는 페이지의 버튼을 누를 때 창을 닫는 "명시된 작업.

닫기 함수가 birthday() (여기서 winNew이 정의 됨) 외부에 있거나 표시되지 않은 코드의 내용으로 인해 문제가 발생하는 것이 가장 좋습니다.

또 다른 경고는 자식 창이 열릴 때 URL이 지정되었는지 여부에 따라 Greasemonkey 스크립트가 자식 창에서도 실행될 수 있다는 점에 유의해야합니다.

다음은 버튼을 눌러 하위 창을 열고 닫는 샘플 코드입니다.
See it in action at jsfiddle.

<html> 
<head> 
<script type="text/javascript"> 
    var chldWnd; 

    function OpenChldWin() 
    { 
     //chldWnd = window.open ("http://www.google.com"); 
     chldWnd = window.open ('','','height=200, width=200'); 
     chldWnd.document.write ('<p>My New Window</p>'); //-- Don't do if opening a URL in new window. 
     chldWnd.focus(); 
    } 

    function CloseChldWin() 
    { 
     if (chldWnd.closed) 
      alert ('Child window was already closed.'); 
     else 
     { 
      chldWnd.close(); 
      alert ('Child window is NOW closed.'); 
     } 
    } 
</script> 
</head> 
<body> 
<input type="button" value="Open Child Window"  onclick="OpenChldWin()"> 
<input type="button" value="Close the Child Window" onclick="CloseChldWin()"> 
</body> 
</html> 
+0

사실 내 문제의 일부는 실제로 페이지에서 코드를 실행하고 있다고 생각했습니다. 명확히하는 데 도움을 주셔서 감사합니다. 나는 그것을 다시 시도 할 것이고, 필요할 때 위치 해킹을 추가 할 것이다. – Matt