2010-12-15 23 views
1

Facebook用にGreasemonkeyスクリプト(拡張機能としてドラッグ&ドロップ)を書いてきました。私は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() 
} 

ウィンドウが開きます罰金が、私は「『近い』未定義のメソッドを呼び出すことはできません」と言ってChromeでJavaScriptのエラーが発生します。 Greasemonkeyのサンドボックスに関する私のオブジェクトに何か問題があると私は想定していますが、私は何を決定するのか迷っています。 ChromeのGreasemonkeyスクリプトを使用してウィンドウを閉じることも可能ですか?有効にするために必要な設定がありますか?または私のコードは間違っていますか?このコードは、メインウィンドウのページの関数から実行されていることに注意してください。これは、私がスクリプトに書いたボタンのonClickイベントを使って関数と同じに設定しています。また、子ページのDOM要素にアクセスするためのヒントがあれば幸いです。

ありがとうございました!

(申し訳ありませんが、私はプログラミングでの練習のうちだけでなく、非常に新たなんだ、これは私がGreasemonkeyのスクリプトを書いたのは初めてです)

答えて

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

関連する問題