2011-01-06 55 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

相關問題