我实际上在上一篇文章中找到了与我问的问题相关的代码,但是,尽管它看起来很容易,但我无法通过doc.getElementsByTagName不是函数错误。以下是示例代码:
var addCssRule = (function() {
var addRule;
if (typeof document.styleSheets != "undefined" && document.styleSheets) {
addRule = function(selector, rule, doc, el) {
var sheets = doc.styleSheets, sheet;
if (sheets && sheets.length) {
sheet = sheets[sheets.length - 1];
if (sheet.addRule) {
sheet.addRule(selector, rule)
} else if (typeof sheet.cssText == "string") {
sheet.cssText = selector + " {" + rule + "}";
} else if (sheet.insertRule && sheet.cssRules) {
sheet.insertRule(selector + " {" + rule + "}", sheet.cssRules.length);
}
}
}
} else {
addRule = function(selector, rule, doc, el) {
el.appendChild(doc.createTextNode(selector + " {" + rule + "}"));
};
}
return function(selector, rule, doc) {
doc = doc || document;
var head = doc.getElementsByTagName("head")[0];
if (head && addRule) {
var styleEl = doc.createElement("style");
styleEl.type = "text/css";
styleEl.media = "screen";
head.appendChild(styleEl);
addRule(selector, rule, doc, styleEl);
styleEl = null;
}
};
})();
addCssRule("ol", "color:red", tinyMCE.Editor[0]);
我很确定代码是正确的。我想我误解了tinymce变量是如何传递的。你觉得怎么样?
答案 0 :(得分:5)
您传递给函数的第三个参数是tinyMCE.Editor[0]
。 是否具有getElementsByTagName
功能?
答案 1 :(得分:2)
你的代码看起来很好,虽然我认为在你的情况下,addCssRule
的最后一个参数不是DOM元素。至少是导致这种错误的原因。
答案 2 :(得分:1)
这里的问题是
<强> 1。您不使用文档作为第三个参数来调用您的函数 - 它是一个编辑器实例。
要解决此问题,您应该使用addCssRule("ol", "color:red", tinyMCE.Editor[0].getDoc());
或addCssRule("ol", "color:red", tinyMCE.get(editor_id).getDoc());
<强> 2。您正在查看函数内的错误文档。您所做的是查看主窗口文档,而不是编辑器实例iframe的文档(这是您希望css规则适用的文档)!你也需要在tinyMCE.Editor[0].getDoc()
进行评估。