2011-02-10 7 views
3

私は古い開発者のサイトとコードを扱っています。親子フォームの子ウィンドウを削除する

男が書いたGLOBALプリント機能があります。これは基本的に(任意の方法から)開いている新しいウィンドウを感知し、 "href.match"はドメイン名です...スクリプトは必要ならばプリントスタイルシートを適用しますwindow.printを発生させます。

これは、すべてのページにあり、いくつかの他の機能を含むグローバルスクリプトから行われます。

私はこの機能をエスケープしたいと思っている各ページの書き込みケースにうんざりです。また、特定のページにNOT句を書くと、子ウィンドウのドメイン内で開かれた後続のページにその印刷機能が表示されます。

この新しいウィンドウで継承を「破棄する」方法はありますか?基本的に、このウィンドウを作成した親の子ではないようにするには?

addEvent(window, 'load', function() { 
    var printBtn = document.getElementById('print-page'); 
    if (window.opener && window.opener.location.href.match('domainnamehere')) { 
     var printCSS = document.createElement('link'); 
     var a = document.getElementsByTagName('a'); 
     printCSS.href = 'css/print.css' 
     printCSS.setAttribute('type', 'text/css'); 
     printCSS.setAttribute('rel', 'stylesheet'); 
     document.getElementsByTagName('head')[0].appendChild(printCSS); 

     for (var i = 0; i < a.length; i++) { 
      a[i].href=""; 
      a[i].onclick = function() { return false; }; 
      a[i].style.cursor = "default"; 
     } 

     window.print(); 
    } else if (printBtn){ 
     printBtn.onclick = function() { 
      var printWindow = window.open(window.location, 'printwindow', 'resizable,width=800,height=800,scrollbars'); 

      return false; 
     }; 
    } 
}); 

答えて

5

openerプロパティは、子ウィンドウへのアクセスを与えるものであるので、あなたはそれを切断する場合は、あなたがしなければならないすべては、nullに設定されています。これを実行すると、私はいつもハックは

if(bustInheritance) { 
    window.oldOpener = window.opener; 
    window.opener = null; 
} 
+0

おかげでジョシュを...完璧。 –

1

...あなたが他の理由のためにそれを必要とする場合に無効化する前に別のプロパティにコピーしますが、トリックを行う場合があります

var win_onload = window.onload; 
// replace it with a function that does nothing 
window.onload = function() { }; 

... open your window ... 

// put the event handler back 
wndow.onload = win_onload; 
+0

クールクリスが、ジョシュが最初にそこに着いた:)ありがとう! –

+0

5秒で...忍者は私たちの中にいます。 –

関連する問題