2016-08-10 2 views

답변

1

MutationObserver API는 요소에 변경 요소를 모니터링 할 수 있습니다.

var btnElement = document.getElementById("buttonId"); 

var observer = new MutationObserver(observerChanges); 
observer.observe(btnElement, { 
    attributes: true, 
    subtree: opt.watchChildren, 
    childList: opt.watchChildren, 
    characterData: true 
}); 

/// when you're done observing 
observer.disconnect(); 

function observerChanges(mutationRecord, mutationObserver) { 
    console.log(mutationRecord); 
} 
+0

위대한 결과를 얻었습니다! 고맙습니다. – fakedrake

0

사용 중지 된 코드를 삭제할 수 있습니까? 그러나 여기에 내 머리 꼭대기에서 본보기가 있습니다. 우리는 우리가 버튼 장애인 기능을 제거 remove_disable 호출 할 때

<button class="class" id="btn1" disabled> 

function remove_disable() 
{ 
    document.getElementById('btn1').disabled = false; 
    function2(); 
} 

는 기능 2

다음
function function2() 
{ 
    //somecode 
} 

후 다른 기능을 실행합니다. 이것은 당신이 변경이 완료되면 제어 할 경우 방법

+0

나는 언제 또는 어떻게 장애가 제거되었는지 알지 못합니다. 외부 (모호한) 라이브러리가 내 버튼을 관리하고 해당 라이브러리가 버튼을 사용할 수있게 할 때 이벤트에 연결하려고합니다. 'document.getElementById ('btn1') .onAttributeChanged' 라인을 따라 무언가를 기대할 것입니다. 그러나 그런 것은 없습니다. – fakedrake

+0

어떤 라이브러리를 사용하고 있습니까? 어쩌면 모든 것을 필요로하지 않는다면 전체 라이브러리를 제거 할 수 있습니다. 그렇지 않으면 라이브러리를 보여줄 수 있고 아마도 거기에서 우리는 코드를 관리 할 수 ​​있습니다. –

0

에 도움이

희망, 간단한 콜백 함수는 가장 쉬운 해결책이 될 것입니다.

그렇지 않으면 Mutation Observers을 사용하여 입력에 대한 사용 중지 된 속성이 변경된 시간을 확인할 수 있습니다.

1

Object.prototype.watch()을 사용할 수 있습니다. 그것은 단지 파이어 폭스에서 지원하지만, here's a polyfill 것 :

는 HTML :

<button id="myButton" disabled="disabled">Click</button> 

자바 스크립트 :

var myButton = document.getElementById('myButton'); 
myButton.watch("disabled", function() { 
    console.log("myButton changed!"); 
}); 

myButton.disabled = false; // "myButton changed" will be logged 

JSFiddle : https://jsfiddle.net/6ofvutwh/1/

더 많은 정보는 : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/watch

+0

아마도이 문제에 대한 끔찍한 브라우저 지원을 언급해야 할 것입니다. https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/watch#Browser_compatibility. – Ozan

2

는 당신은 알림을받을 수 있습니다 implemen에 의한 DOM 변경 사항 MutationObserver를 호출하는 중입니다.

var observer = new MutationObserver(function(mutations) { 
    if(mutations.some(function(m) { return m.attributeName == 'disabled' && !m.target.disabled; })) 
    { 
    alert('Button was enabled'); 
    } 
}); 

observer.observe(targetButton, { attributes: true, childList: false, characterData: false }); 

Demo

+0

관찰을 멈추고 싶다면 ** observer.disconnect ** 메소드를 사용하십시오. - –

관련 문제