1

RichTextBoxにはそのようなdomレベルの階層がありますか?

  <iframe>
    <html>
     <body>
     </body>
   </html>
 </iframe>

スタイル名をiframeに設定しても機能しないことがわかりました。また、body要素に設定する必要があります。私はこのように(コンストラクターで)それをやろうとしました:


  Element body = ((FrameElement) getElement().cast()).getContentDocument().getBody();
  body.setClassName("richTextArea");

NullPointerExceptionがこの男の子要素にスローされ、私でさえ次のようにそれらをラップします。


  Scheduler.get().scheduleDeferred(new ScheduledCommand()
  {
     @Override
     public void execute()
     {
         Element body = ((FrameElement) getElement().cast()).getContentDocument().getBody();
         body.setClassName("richTextArea"); 
     }

  });

実際の問題は、RichTextBoxが奇妙にレンダリングされ、DOMにアタッチされたときに、その内部のもの(html、body)が生成されなかったことです。これらの行をonload()メソッドにラップしても、NPEはいつかスローされます。それらをタイマーにラップしてから、比較的長い待機時間をスケジュールします。NPEはありませんが、この予測できない「比較的長い待機時間」に依存することはできません。

誰かが解決策を与えることができますか?

4

1 に答える 1

0

メイン ページで定義された CSS ルールを RichTextArea のコンテンツに適用することはできません。RichTextArea によって作成された iframe にスタイルを含める必要があります。

インライン スタイルの簡単な例を次に示します。

RichTextArea richTextArea = new RichTextArea();
richTextArea.setSize("200px", "200px");
richTextArea.setHTML("<html><head><style type=\"text/css\">h1 {color: red}</style></head><body><h1>Title</h1><p>content...</p></body></html>");
RootPanel.get().add(richTextArea);

また、css ファイルを外部化することもできます。それに応じて、richTextEditor に設定された html コードを調整する必要があります。

于 2012-08-12T07:50:32.513 に答える