2011-01-06 52 views
1

实际上,我在之前的帖子中发现了这个代码,与我提出的问题有关,尽管看起来很容易,但我无法过去doc.getElementsByTagName不是函数错误。以下是示例代码: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

什么浏览器给出错误? – SLaks 2011-01-06 00:11:34

回答

1

的问题是

1.你不使用文档作为第三个参数调用你的函数 - 这是一个编辑器实例。 为了解决这个问题addCssRule("ol", "color:red", tinyMCE.Editor[0].getDoc());addCssRule("ol", "color:red", tinyMCE.get(editor_id).getDoc());

2.您reffering到你的函数里面的错误文档,你应该使用。你所做的是重申主要的Windows文档,而不是编辑器实例iframe的文档(这是你希望css规则适用的文档)!您也需要在这里注意tinyMCE.Editor[0].getDoc()

+0

我不得不做一点编辑,但是这个工作很好。谢谢!!!这几天我一直在抨击我的头。谢谢十亿。 – Micharch54 2011-01-06 15:49:59

+0

很高兴能够提供帮助 – Thariama 2011-01-06 16:10:39

2

你的代码对我来说看起来很好,但我认为在你的情况下,addCssRule的最后一个参数不是DOM元素。至少这会导致这样的错误被提出。

5

您传递给函数的第三个参数是tinyMCE.Editor[0]getElementsByTagName功能吗?这里

+0

雅各布带再次击中! :) – 2011-01-06 00:12:14

+0

你知道......我想我对tinymce api不够了解。我一直在努力避免手动传递名称,因为我希望函数尽可能的成为可能。我想我需要做更多的研究,以确定tinymce实际存储对象的方式。尽管感谢您的快速回复。 – Micharch54 2011-01-06 15:28:10

相关问题