2009-10-01 2 views
0

script.aculo.us 사용하기 onMouseOver 이벤트의 Effect.Highlight는 완벽하게 작동합니다 - 사용자가 DIV 위에 마우스를 한 번만 움직이면. 활성화Script.aculo.us 급속 승계의 이벤트로 인해 디스플레이 오류가 발생합니다 ...?

: { '말'큐} 다시 DIV를 통해 그들이 마우스 효과의 실행 중에있는 경우, 또 다른 효과는

여부에 따라 예약 된 (또는 실행 병렬 도착).

script.aculo.us에는 이런 일이 발생하지 않도록하는 기본 제공 방법이있어서 DIV는 휴면 상태에서 DIV 위에 마우스가 놓여있는 경우에만 강조 표시됩니다. 그렇지 않으면 'resting'으로 복원되는 상태 변수를 유지할 수 있다고 생각합니다.

afterFinish : function (obj) {resting = true; }

예전에 Effect.Shake를 여러 번 호출하면 DIV가 더 넓은 프레임에서 흔들 렸습니다. click to see demo

답변

1

내가 질문에 제안 된 것과 유사한 해결책을 온은 일을 나타납니다 :

$('id').writeAttribute('resting'); 
// 
// other code here 
// 
if($('id').readAttribute('resting') == 'resting') { 
    $('id').writeAttribute('resting',false); 
    new Effect.Highlight('id', {queue: 'end', startcolor:'#b3ff8d', endcolor:'#ffffff',afterFinish:function(obj) {obj.element.writeAttribute('resting')}}); 
} 
0

onMouseover와 이벤트가 요소를 통해 때마다 마우스를 발사한다 : 당신이 연속해서 데모를 여러 번 클릭하면

또한이 문제는 데모 사이트에서 볼 수 있습니다. Script.aculo.us에는 요청한 내용을 확인하는 방법이 없습니다.

그러나 할 수있는 일은 onMouseOver 클래스를 "fired"라는 요소에 추가하고 해당 클래스가 파이어를 표시하지 않으면 mouseover를 트리거하는 것입니다.

또한 타이머를 onMouseOut에 추가 할 수 있으므로 타이머가 다 떨어지기 전에 요소 위에 마우스를 올려 놓으면 강조 표시되지 않습니다. 나는 이것이 털이 나올 수 있음을 인정한다.

0

하이라이트의 데모에서 동일한 문제가 발생했기 때문에 나는 그 방법으로 만든 것이라고 상상합니다.

Scriptaculous 라이브러리 또는 Prototype이 작성된 Prototype에 익숙하지 않습니다. 그러나 Effect.Highlight (currently line 474 of the code)에 대한 소스 코드를 훑어 보면 문제를 해결하기 위해 무엇을 할 수 있는지 알 수 있습니다.

실제로이 시도,하지만 내가 시도 유혹 될 것은이 같은 것입니다하지 않은 :

function MySiteSetup(){ 
var highlight = new Effect.Highlight('id_of_element', [options]); 

var firing = false; 
var oldSetup = highlight.setup; 
highlight.setup = function(){ 
    if(firing) return; // Short circuit the effect if it's already firing 

    firing = true; 
    oldSetup(); 
    firing = false; 
} 
} 
관련 문제