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

答えて

1

問題が

1.あなたは3番目のパラメータとしてドキュメントを使用して機能を呼び出すことはありませんされている - それは、エディタインスタンスです。あなたがあなたの関数内間違った文書にrefferingさaddCssRule("ol", "color:red", tinyMCE.Editor[0].getDoc());またはaddCssRule("ol", "color:red", tinyMCE.get(editor_id).getDoc());

2を使用する必要があり、この問題を解決するにはあなたがしていることは、メインウィンドウのドキュメントに反映され、エディタインスタンスiframeのドキュメントではありません(つまり、CSSルールを適用したいドキュメントです)!ここでもtinyMCE.Editor[0].getDoc()にお問い合わせください。

+0

私は少し編集をしなければならなかったが、これはかなりうまくいった。ありがとうございました!!!私は数日間頭を叩いてしまった。ありがとうございます。 – Micharch54

+0

喜んで助けになりました – Thariama

2

あなたのコードはaddCssRuleの最後の引数がDOM要素ではないと私は思っていますが、コードはうまく見えます。少なくともそのようなエラーが発生する原因は何かです。

5

関数に渡す3番目のパラメータはtinyMCE.Editor[0]です。 にはgetElementsByTagNameの機能がありますか?ここ

+0

ジェイコブスのバンドが再び攻撃! :) –

+0

あなたは知っている...私はあなたにそれを伝えるためにtinymce APIについて十分にわからないと思う。私は手動で名前を渡すことを避けようとしています。なぜなら、関数をできるだけoopにしたいからです。私は実際に物体をどのように蓄えるかについてより多くの研究をする必要があると思う。しかし、迅速な返信をありがとう。 – Micharch54

関連する問題