2013-05-08 9 views
0

HTMLImageElement src 속성에 대한 변경 사항을 문서에 아직 첨부하지 않은 상태에서 추적하고 싶습니다. 제 목표는 이미지 URL을 수정하여 삽입 된 스크립트를 사용하여 특정 프록시 서버를 사용하도록하는 것입니다. 주로 사전로드를 위해 Image 객체를 사용하는 스크립트는 외부 (타사) 객체이므로, &을 검색하여 instance.src = value의 항목을 다른 것으로 바꿀 수는 없습니다. 스크립트가 포함 된 문서를 제어 할 수는 있지만 스크립트 자체는 제어 할 수 없습니다. HTMLImageElement : 아직 첨부되지 않은 상태에서 'src'속성의 변경 내용을 추적하십시오.

는 이미 이미지 요소

Object.defineProperty(
    Image.prototype, 
    "src", 
    { get : function(){...}, set : function(val){...}} 
); 

에 게터/세터를 정의하려고 그러나 이것은 전혀 어떤 영향을 미칠 것 같지 않습니다.

var img = new Image(); 
img.src = "foo.png"; 
alert(img.src); 

과 같이 새 이미지를 만들 때 setter도 getter도 호출되지 않습니다.

원본 속성을 수정하지 않고 src 속성을 수정 한 경우 알림을 얻으려는 다른 방법이 있습니까?

미리 감사드립니다.

+0

우선, 나는 혼란하지 않을 것입니다. 붙박이 시제품. 둘째,'src'는 Image 객체의 속성이므로 생성자에서 생성됩니다. 따라서 src를 덮어 쓰려고하는 대신 프로토 타입에 메소드를 추가하고'this.src'와 상호 작용하도록하십시오. –

답변

1

예제 코드를 사용하여 이전 답변을 다시 테스트했습니다. Andrei의 제안을 대신 사용하겠습니다. 대신 P : 더 일반적인 "방법"을 통해 프로토 타입에 첨부 된 메서드를 사용하여 작업하십시오.

+0

미안하지만 내 질문이 애매한 것 같습니다. 제 3 자 코드를 사용하는 일반적인 솔루션으로 작동해야하므로 원본 소스를 전혀 수정할 수 없으므로 다른 속성을 도입 할 수 없습니다. – muffel

+0

그것은 이상한 것입니다. 필요로하는 것을 수행하기 위해 제 3 자 코드를 확장 할 수 있습니까? JS의 핵심 부분을 수정하려는 시도는 '나쁜 생각'입니다. 특히 이러한 솔루션이 모든 브라우저에서 또는 동일한 방식으로 지원되지 않을 수 있다는 점을 감안할 때. 나는 당신의 의도 된 경로에 매우 조심스럽고 조심 스러울 것이며, 제 3 자 코드를 확장 할 방법을 찾을 수 없는지 당신의 경로를 재평가 할 것을 제안합니다. – phatskat

관련 문제