У меня есть TextField, который я инициализирую, установив htmlText. Текст имеет якорные теги (гиперссылки). Когда пользователь нажимает на гиперссылку, меняется отступ второй и последующих строк в абзаце. Почему? Как мне это остановить?
В моем html есть изображение в начале строки, за которым следует тег, за которым следует текст. Чтобы гиперссылки всегда выглядели синими и подчеркивались, когда над ними находится указатель мыши, я делаю следующее:
var css:StyleSheet = new StyleSheet();
css.parseCSS("a {color: #0000FF;} a:hover {text-decoration: underline;}");
stepText.styleSheet = css;
stepText.htmlText = textToUse;
stepText.visible = true;
Вот фрагмент html-текста (с добавленными символами новой строки и дополнительными пробелами для улучшения читабельности — изначально это была одна длинная строка):
<textformat indent="-37" blockindent="37" >
<img src="media/interface/level-1-bullets/solid-circle.png"
align="left"
hspace="8"
vspace="1"/>
American Dental Association. (n.d.). <i>Cleaning your teeth and gums (oral hygiene)</i>.
Retrieved 11/24/08, from
<a href="http://www.ada.org/public/topics/cleaning_faq.asp"
target="_blank">http://www.ada.org/public/topics/cleaning_faq.asp
</a>
</textformat>
<br/>
Как оказалось, текстовое поле имеет такую ширину, что оно переносится, а вторая строка начинается с «Проверено 24.11.08». Щелчок по гиперссылке приводит к отступу этой конкретной строки. Последующие абзацы не затрагиваются.
В ДОПОЛНЕНИЕ: Изображение представляет собой маркированный список шириной около 37 пикселей. (Я использовал изображения вместо тегов li, потому что Flash не поддерживает вложенные списки, поэтому я сымитировал его, используя серию изображений с разным количеством пробелов, чтобы имитировать три уровня отступов.)
ИДЕЯ: я думал изменить все гиперссылки, чтобы использовать «event:» в качестве протокола URL, который вызывает событие TextEvent.LINK вместо перехода по ссылке. Тогда мне пришлось бы открывать браузер во втором вызове. Я мог бы использовать этот обработчик событий, чтобы установить сам текст html, что может устранить проблему. (Когда я переключаю страницы в своем приложении, а затем возвращаюсь на страницу, все снова в порядке.)
ПРОБЛЕМА: Если я использую протокол "event:" и пользователь попытается щелкнуть правой кнопкой мыши, он получит сообщение об ошибке, по крайней мере, так мне сказали. (См. http://www.blog.lessrain.com/as3-texteventlink-and-contextmenu-incompatibilities/ ) Мне не нравится этот компромисс.