0

コードで新しいウィンドウを開きました:

w = window.open("", "ventana", "status=1,width=350,height=150");

そして、そこでテーブルを作成しました

var tresumen = w.document.createElement("table");

などなど…

すべて正常に動作しますが、CSS の適用に関しては、メインの html から参照した別の css ファイルを新しいウィンドウが読み取っていないことがわかりました。CSS には、次のtableような行があります。

table {
        some attributes here;
}

新しいウィンドウに CSS を読み込ませるために考えることができる唯一の方法は、新しいウィンドウdocument.writeの JavaScript の中に a を配置し、(再び) css ファイルを参照するための html コードをそこに配置することですが、それは既にメインで参照されているためです。 html、なぜそれが適切な方法なのかわかりません...

ここで私の間違いは何ですか?

メイン ウィンドウが使用している CSS を新しいウィンドウ (独自の html なしで!) に読み込ませるにはどうすればよいですか?

ありがとう!

4

3 に答える 3

3

スタイルを新しいウィンドウにコピーできます。

var stylesheets = document.querySelectorAll('style, link[rel="stylesheet"]');
stylesheets = Array.prototype.slice.call(stylesheets);
for (var i = 0; i < stylesheets.length; i++) {
    copyStyle(window, w, stylesheets[i]);
}

function copyStyle(from, to, node) {
    var doc = to.contentDocument;
    var newStyle = doc.createElement(node.tagName);
    if (node.textContent) {
        newStyle.textContent = node.textContent;
    } else if (node.innerText) {
        newStyle.innerText = node.innerText;
    }
    newStyle.type = node.type;
    newStyle.src = node.src;
    newStyle.rel = node.rel;
    doc.getElementsByTagName('head')[0].appendChild(newStyle);
}
于 2012-12-16T13:05:13.167 に答える
1

新しいウィンドウ内に実際のHTMLドキュメントがロードまたは生成されていない場合、マークアップを理解するためにブラウザのタグスープの解釈に依存しています。

そうは言っても、外部スタイルシートを参照するスタイルまたはリンク要素をそのウィンドウのDOMに追加する必要があります。

于 2012-12-16T13:01:16.517 に答える