2013-03-08 2 views
0

메서드를 XMLHttpRequest 개체에서 변경하고 싶습니다. 실제로 나는 물마루 xhr를 보낼 것입니다 모든 URL을 변경해야합니다. 내가 어떻게 할 수 있니? XHR 객체 http://domain.com/에 대한 하나 개의 요청을 열 때DOM 객체 프로토 타입에서 메소드를 변경하는 방법

예를 들어 당신이 기본 DOM 객체에 어떤 방법을 intrupt 수 https://domain.com/

+0

사실 기본 방법을 변경하는 것이 좋습니다. 원하는대로 만든 XHR 객체를 반환하는 함수 만 만들면됩니다. –

+0

이것은 가능할 수도 있지만 네이티브 생성자의 프로토 타입을 변경하는 것은 끔찍한 관행입니다. 당신이나 미래의 확장 기능이'http' 프로토콜로 요청할 필요가 있다면 어떨까요? 깨진 부분이 수정되면 응용 프로그램의 나머지 부분이 손상 될 것입니다. –

+0

업데이트 된 답변 확인 – Mohsen

답변

2

로 변경하고자하지만 recommnended되지 않습니다. 이러지 마. URL의 을 변화 당신의 아주 사용 사례를 들어

var open = XMLHttpRequest.prototype.open; 
XMLHttpRequest.prototype.open = function(){ 
    // do stuff you want 
    // for example console.log: 
    console.log('test'); 
    // then let open method happen 
    open.apply(this, arguments); 
} 

,이 작업을 수행 할 수 있습니다 어쨌든 당신이 XMLXttpRequestopen 방법을 조작하는 방법을 알고 싶다면

, 이것은 당신이 그것을하는 방법이다 :

var open = XMLHttpRequest.prototype.open; 
XMLHttpRequest.prototype.open = function(){ 
    var link = document.createElement('a'); // make an anchar element 
    link.href = arguments[1]; // make it's href equal to second argument which is URL 
    link.protocol = 'https:'; // force https to the link 
    arguments[1] = link.href; // write back URL form link that is now start with 'https' 
    // then let open method happen 
    open.apply(this, arguments); 
} 
+0

감사합니다! 그것은 좋은 일했습니다! – IVIR3zaM

+0

친애하는 mohesen 나는 질문이 있고 당신이 저를 응답해서 좋다는 것을 희망하십시오 : X – IVIR3zaM

+0

나는 어떻게 javascript에 의하여 모든 http 요구를 덫을 놓을 수 있는가? 나는 그들 모두를 바꿀 필요가있다. – IVIR3zaM

관련 문제