几个指针。
不久前我对此进行了一些研究,发现了一些棘手的浏览器问题以及关于 Quirksmode 和 IIRC Dojo 邮件列表的一些好的解决方案和建议。它产生了以下库函数来应用我在主要浏览器中测试过的 CSS:
function applyCSS(css) {
// http://www.quirksmode.org/bugreports/archives/2006/01/IE_wont_allow_documentcreateElementstyle.html
if (BrowserDetect.browser=="Safari" || BrowserDetect.browser=="Opera") { /* good for FF too */
var styleNode = document.createElement("style");
styleNode.setAttribute("type", "text/css");
styleNode.appendChild(document.createTextNode(css));
head.appendChild(styleNode);
} else {
var div = document.createElement("div");
div.innerHTML = "<p>x</p><style>"+css+"</style>";
document.body.appendChild(div.childNodes[1]);
}
}
如果您最终在 iframe 中执行此操作,则此技巧可能会有所帮助(来自 TiddlyWiki 代码):
var doc = iframe.document;
if(iframe.contentDocument)
doc = iframe.contentDocument; // For NS6
else if(iframe.contentWindow)
doc = iframe.contentWindow.document; // For IE5.5 and IE6
// Put the content in the iframe
doc.open();
doc.writeln(content);
doc.close();
上面的代码生成了一个包含一些内容的新 iframe。如果您只输出 iframe 一次并且您已经知道 CSS,那么您可以在输出 iframe 时发送一个标签。