印刷ページを生成するために親domにアクセスする必要があるポップアップウィンドウがあります。印刷ページの構造は親の構造とは大きく異なるため、印刷CSSでは問題を解決できません。私は基本的にウィンドウをポップアップし、そのウィンドウが親からいくつかのデータを取得し、ポップアップからdomにアクセスして、サーバーに再度アクセスすることなく印刷ページを生成することを望んでいます。どうすればこれを達成できるでしょうか?
私は標準を使用しています
window.open()
ウィンドウをポップアップします。私はこのソリューションがハックではなく、すべての主要なブラウザーと互換性のあるクロスブラウザーである必要があります。
前もって感謝します!
Sajjanの答えは始まりですが、オブジェクトにアクセスする前に、オブジェクトが使用可能であることを確認してください。
var opener = window.opener;
if(opener) {
var oDom = opener.document;
var elem = oDom.getElementById("your element");
if (elem) {
var val = elem.value;
}
}
そうしないと、オープナーが最初の呼び出しに応答せず、オープナーから要素を取得できないリスクがあります。
JQueryとして、私は考える(答えに基づいて、ここ: jqueryを使用して親ウィンドウオブジェクトにアクセスする方法? ):
var opener = window.opener;
if(opener) {
var elem = opener.$("#elementId");
if (elem) {
var val = elem.val(); // I forgot we're dealing with a jQuery obj at this point
}
}
window.opener.document.getElementById( "your element")。value
[〜#〜] mdn [〜#〜] によると、window.open()
は新しいウィンドウへのハンドルを返します。
var popUpHandle = window.open();
このハンドルを使用すると、PopUpのDOMにアクセスできるはずです。すでに述べたwindow.opener
を使用してその逆も可能です。再度参照してください [〜#〜] mdn [〜#〜] :
var originalWindow = window.opener;
それでも、このトピックはかなり古く、あなたのアプローチはすでに100万回以上行われているため、お気に入りの検索エンジンはより詳細を提供します。
私の場合、parent.documentが役に立ちました。
var elem = parent.document.getElementById("overlay_modal");
if (elem) {
alert('setting attribute');
elem.setAttribute("onclick", "Windows.close('2', event);");
}