ExternalInterfaceはブラウザによって入力される改行コードが異なる
ExternalInterface.addCallbackしたメソッドを各ブラウザでコールすると、改行文字が異なって、文字列長が異なる。
調べてみると
ブラウザ | 改行コード |
---|---|
IE6 | \r\n |
FF2 win | \n |
Opera9 win | \r\n |
FF2 mac | \n |
Safari2 mac | \n |
となっている。
しかも、textFieldに\rを追加したときの挙動がよくわからない。
上のように、期待した通りの結果にならない。本当であれば、dの後にテキストの高さが配置されるんだろうけど、そうはなってない。
だから、ブラウザから入力された\rは排除してあげるよう
ちなみに、上のプログラムのソースは下に記述しておきます
package { import flash.display.*; import flash.text.*; public class Study12CrLf extends Sprite { public function Study12CrLf() { stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; var format:TextFormat = new TextFormat(); format.size = 15; var textField:TextField = new TextField(); textField.height = 150; textField.defaultTextFormat = format; textField.appendText("\\nの場合\n"); textField.appendText("a\nb\nc\nd\n"); textField.appendText(textField.textHeight.toString()); addChild(textField); var textField2:TextField = new TextField(); textField2.height = 150; textField2.defaultTextFormat = format; textField2.appendText("\\r\\nの場合\r\n"); textField2.appendText("a\r\nb\r\nc\r\nd\r\n"); textField2.appendText(textField2.textHeight.toString()); textField2.x = 80; addChild(textField2); } } }