Запретить атрибут заголовка родительского элемента вызывать переход браузера - PullRequest
5 голосов
/ 01 июля 2010

Все хорошие браузеры работают так, что пустой атрибут «title» для элемента означает «не показывать здесь заголовок перехода».Это имеет смысл, так как маленький белый эстакада без чего-либо ( edit - или ничего, кроме символа пробела) для большинства людей совершенно бесполезен.

Разработчики IE не делаютсогласен.

Моя проблема в том, что у меня есть немного "что это?"механизм на сайте, который включает в себя абсолютно позиционированный <div>, содержащий небольшое изображение знака вопроса.У этого <div> есть атрибут «title» с вопросом типа «Что делает кнопка« History Eraser Button »?»Когда вы нажимаете на знак вопроса, появляется всплывающее окно «Справка», и вы можете прочитать о теме.Идея «заголовка» заключается в том, что, если пользователь наводит курсор на вопросительный знак, он видит вопрос, который (надеюсь) может возникнуть у него.

Что ж, проблема с «заголовком» заключается в том, чтовсплывающий «всплывающий» всплывающий подсказок находится внутри абсолютно расположенного <div>, поэтому он правильно расположен на страницеДругими словами, у абсолютно позиционированного <div> просто есть «position: absolute», но его можно отбрасывать на странице в «правильном» месте без каких-либо вычислений смещения.Таким образом, «подсказка» автоматически находится в нужном месте. Но : этот "заголовок" на родительском элементе <div> неприятен, потому что браузер выдает его после , когда всплывающее окно открыто.Зачем?потому что «вспомогательный» шарик лексически содержится во внешнем <div>, хотя внешний <div> - это просто мелочь с вопросительным знаком.

Таким образом, решение № 1 состояло в том, чтобы дать«help» balloon <div> его собственный атрибут «title», в котором ничего нет ( edit - я ошибся; это не ничто в заголовкеКосмический персонаж).Это прекрасно работает, кроме как в IE.Теперь в IE этот пустой атрибут «title» заставляет браузер выставить маленький пустой прямоугольник.Полезно.

Конечно, я мог бы поиграться с Javascript и просто сбросить атрибут «title» с родительского элемента <div>, пока отображается шарик, но мне любопытно узнать о возможных способах «переопределить» родительский элементэлемент "title" в IE, который может быть сделан только с разметкой.Если это невозможно, ну да ладно.

Простая демонстрационная страница: http://gutfullofbeer.net/title.html (попробуйте с IE 7 или 8, чтобы увидеть маленькую пустую белую коробку)

edit - ха-ха-ха - когда я изменяю свой код так, чтобы я явно обнулял атрибуты "title" на всех родительских элементах, IE показывает переход со словом "null" в нем: -)

Ответы [ 3 ]

2 голосов
/ 01 июля 2010

Почему бы не присвоить заголовок элементу вопросительного знака (#qmark) вместо содержащего div?Поэтому вместо:

<div title="this is the overlapping title">  
    <div id="qmark">?</div>
    <div id="hiddenContainer"></div>
</div>  

это будет

<div>
    <div id="qmark" title="this title no longer overlaps">?</div> 
    <div id="hiddenContainer"></div>
</div>
1 голос
/ 06 июля 2010

Я закончил тем, что дополнил свой существующий код, который открывает / закрывает пузырь «справки», так что он запускает цепочку родительских элементов и сохраняет код «заголовка» с помощью jQuery «data».Когда пузырь закрывается, названия восстанавливаются.

1 голос
/ 01 июля 2010

Не думаю, что вы можете делать то, что хотите. В любом случае это выглядит как хак - атрибуты дочерних элементов DOM не предназначены для «переопределения» родительских атрибутов. Вы, вероятно, должны обернуть конкретный текст с правильным названием, например:

http://jsbin.com/ezipe

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...