2012-12-27 4 views
0

테이블 셀에 링크가 있습니다. 사용자가 마우스 오버하면 링크가 비동기식 RPC 호출이되고 호버 텍스트 (title 속성)가 업데이트됩니다. 사용자가 여전히 요소 위로 마우스를 가져간 동안 마우스 오버 텍스트가 변경되면서 결과가 크게 일치하지 않습니다. 일부 컴퓨터에서는 정상적으로 작동하지만 다른 컴퓨터에서는 작동하지 않습니다.GWT - 앵커 제목을 동적으로 변경합니다.

결과를 캐시하여 사용자가 마우스 오버를 다시 트리거하면 툴팁 텍스트가 올바르게 표시됩니다.

사용자가 여전히 앵커 위에 맴돌고있는 동안 앵커의 제목 속성을 업데이트하는 트릭이 있습니까?

RPC 호출 성공적으로 반환, 우리는 여기

/** 
    * Sets the title associated with this object. The title is the 'tool-tip' 
    * displayed to users when they hover over the object. 
    * 
    * @param title the object's new title 
    */ 
    public void setTitle(String title) { 
    if (title == null || title.length() == 0) { 
     DOM.removeElementAttribute(getElement(), "title"); 
    } else { 
     DOM.setElementAttribute(getElement(), "title", title); 
    } 
    } 

답변

1

코드를 호출하는 문제에 대해 많은 말을 아무튼

link.setTitle(text); 

를 호출합니다. setTitle은 어떤 문제도 의심의 여지없이 작동합니다. 그러나 비동기 호출이 완료 될 때까지 걸린 시간 때문에 마우스 오버를 호출하면 비동기 호출이 발생하는 것이 바람직하지 않습니다.

페이지로드 중 마우스 오버시 표시해야하는 데이터를 프리 페치하고 비동기 호출 대신 해당 텍스트를 직접 설정하는 것이 좋습니다.

0

사용자가 링크 위에서 마우스를 움직이면 브라우저는 제목 속성을 툴팁으로 표시합니다. 귀하의 경우에는 제목이 설정되지 않은 경우 툴팁이 전혀 표시되지 않습니다. RPC 호출이 반환되고 제목을 설정하면 브라우저에서 아무 것도 일어나지 않습니다. 사용자가 링크에서 마우스를 멀리 이동 한 다음 링크 위로 돌아올 때까지 아무런 변화가 없습니다. 따라서 일부 툴팁이 나타나지 않고 다른 마우스 포인터가 이미 표시됩니다.이 UI 패턴은 사용자를 혼란스럽게합니다.

디자인을 다시 생각해야 할 수도 있습니다. 더 나은 방법은 링크 옆에 작은 팝업 패널을 표시하는 것입니다. 이 패널을 표시하고 숨길 때 완벽하게 제어 할 수 있습니다. 팝업 패널을 만듭니다. MouseOverHandler를 링크에 추가하십시오. MouseOverEvent가 발생하면 RPC 호출을 전달하십시오. 호출이 반환되면 팝업 패널을 채우고 링크 옆에 표시합니다. 사용자가 멀리 이동할 때 팝업 패널을 숨 깁니다.

테이블에 많은 수의 링크가있는 경우 분명히 최적화 할 수 있습니다. 테이블에 대해 하나의 MouseOverHandler를 사용하고 어떤 요소가 이벤트의 원본인지 확인할 수 있습니다.

관련 문제