У меня есть 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/>
Как оказалось, текстовое поле имеет такую ширину, что оно переносится, и вторая строка начинается с "Retrieved 11/24/08". Нажатие на гиперссылку приводит к отступу этой конкретной строки. Последующие пункты не затрагиваются.
ВНИЗ: изображение представляет собой список размером около 37 пикселей. (Я использовал изображения вместо тегов li, потому что Flash не допускает вложенные списки, поэтому я имитировал его, используя серию изображений с различным количеством пробелов для имитации трех уровней отступа.)
ИДЕЯ: Я думал об изменении всех гиперссылок, чтобы использовать «событие:» в качестве протокола URL, что вызывает событие TextEvent.LINK, а не переход по ссылке. Тогда я должен был бы открыть браузер во втором звонке. Я мог бы использовать этот обработчик событий для установки html-текста на себя, что может решить проблему. (Когда я переключаю страницы в своем приложении, а затем возвращаюсь на страницу, все снова в порядке.)
ПРОБЛЕМА: Если я использую протокол "event:", и пользователь пытается щелкнуть правой кнопкой мыши, он получит ошибку, или, как мне сказали. (См. http://www.blog.lessrain.com/as3-texteventlink-and-contextmenu-incompatibilities/) Мне не нравится этот компромисс.