메서드를 XMLHttpRequest
개체에서 변경하고 싶습니다. 실제로 나는 물마루 xhr를 보낼 것입니다 모든 URL을 변경해야합니다. 내가 어떻게 할 수 있니? XHR 객체 http://domain.com/
에 대한 하나 개의 요청을 열 때DOM 객체 프로토 타입에서 메소드를 변경하는 방법
예를 들어 당신이 기본 DOM 객체에 어떤 방법을 intrupt 수 https://domain.com/
메서드를 XMLHttpRequest
개체에서 변경하고 싶습니다. 실제로 나는 물마루 xhr를 보낼 것입니다 모든 URL을 변경해야합니다. 내가 어떻게 할 수 있니? XHR 객체 http://domain.com/
에 대한 하나 개의 요청을 열 때DOM 객체 프로토 타입에서 메소드를 변경하는 방법
예를 들어 당신이 기본 DOM 객체에 어떤 방법을 intrupt 수 https://domain.com/
로 변경하고자하지만 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);
}
,이 작업을 수행 할 수 있습니다 어쨌든 당신이 XMLXttpRequest
의 open
방법을 조작하는 방법을 알고 싶다면
, 이것은 당신이 그것을하는 방법이다 :
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);
}
사실 기본 방법을 변경하는 것이 좋습니다. 원하는대로 만든 XHR 객체를 반환하는 함수 만 만들면됩니다. –
이것은 가능할 수도 있지만 네이티브 생성자의 프로토 타입을 변경하는 것은 끔찍한 관행입니다. 당신이나 미래의 확장 기능이'http' 프로토콜로 요청할 필요가 있다면 어떨까요? 깨진 부분이 수정되면 응용 프로그램의 나머지 부분이 손상 될 것입니다. –
업데이트 된 답변 확인 – Mohsen