2016-05-22 2 views
0

Я использую холст для представления нескольких компонентов пользовательского интерфейса. Я устанавливаю canvas.title, чтобы предоставить помощь для каждого компонента.Как отобразить подсказку после перемещения мыши

... 
if(mouse.y >= y && mouse.y <= y + w && mouse.over){ 
    if(currentId !== tool.id){ 
     canvas.title = tool.help; 
    } 
    currentId = tool.id; 
... 

Проблема заключается в том, что, когда мышь перемещается подсказка скрыта и не будет повторно дисплей, пока я не перемещаете мышь и затем перейти обратно на холст.

Я хотел бы изменить поведение, чтобы подсказка инструмента отображалась снова, когда я наводил курсор на другой компонент пользовательского интерфейса, не покидая элемент холста?

+0

Хммм ... только родная подсказка - не разрешена ли подсказка с помощью div-show-on-mouse-event? Давайте посмотрим: 1. Вы уже пытались изменить заголовок. 2. Нет никаких настроек отображения html-подсказок. 3. Ручное срабатывание mouseover/mouseenter не работает, 4. Скрытие и просмотр холста не работают. 5. Временное перемещение холста с положением: абсолютное не работает. Я сдаюсь ... каков ответ? – markE

+1

@markE Ответ? Хотел бы я знать, надеялся, что это не «Нет .. Невозможно!» Только один, который я не пробовал, это триггеры события. Обязательно попробуйте это, прежде чем я приму любой ответ. – Blindman67

+0

Я действительно думал, что ты собираешься ответить на вопрос. :-) Я попытался вызвать вероятные события ... не повезло. Возможно, события в сочетании с изменением видимости, позиции и т. Д., Но я не надеюсь? Просто любопытно ... почему бы не использовать типичную (и более настраиваемую) подсказку типа div-show-on-mouse-event? – markE

ответ

1

Реализации пользовательской подсказки дает больше свободы и контроль.

Это простой пример http://jsfiddle.net/mynetx/5qbP3/ Вы можете взять идеи и построить отсюда. Другим преимуществом является контроль над CSS, который в таких случаях, как ваш, где вы хотите предоставить помощь.

window.addEventListener("load", function() { 
var couponcodes = document.getElementsByClassName("couponcode"); 
for (var i = 0; i < couponcodes.length; i++) { 
    couponcodes[i].addEventListener("mouseover", function() { 
     var coupontooltip = this.getElementsByClassName("coupontooltip")[0]; 
     coupontooltip.removeAttribute("style"); 
    }); 
    couponcodes[i].addEventListener("mouseout", function() { 
     var coupontooltip = this.getElementsByClassName("coupontooltip")[0]; 
     coupontooltip.style.display = "none"; 
    }); 
} }); 
0

Подсказки являются частью системы, в которой работает браузер, и, к сожалению, они не доступны никоим образом от JavaScript.

Я бы рекомендовал использовать вашу собственную всплывающую подсказку, которая не очень сложна (как на холсте, так и с использованием дополнительного элемента).

Если вы беспокоитесь о доступности, то можно дать элемент «подсказку» роль: http://accessibility.athena-ict.com/aria/examples/tooltip.shtml

0

Вы можете использовать fabric.js. см. this.

Смежные вопросы