나는이 대답은 조금 늦게 알아,하지만 난 더 일반적인 해결책이 도움이 될 수 있다고 생각 : 귀하의 후크 기능이 영구적으로 open
인수를 통해 원래의 window.open
기능에 바인딩 다른 사람들 (다른 방법을 무효화하려고 시도)
function wrap(object, method, wrapper){
var fn = object[method];
return object[method] = function(){
return wrapper.apply(this, [fn.bind(this)].concat(
Array.prototype.slice.call(arguments)));
};
};
//You may want to 'unwrap' the method later
//(setting the method back to the original)
function unwrap(object, method, orginalFn){
object[method] = orginalFn;
};
//Any globally scoped function is considered a 'method' of the window object
//(If you are in the browser)
wrap(window, "open", function(orginalFn){
var originalParams = Array.prototype.slice.call(arguments, 1);
console.log('open is being overridden');
//Perform some logic
//Call the original window.open with the original params
orginalFn.apply(undefined, originalParams);
});
출처
2013-07-31 22:35:28
mpd
여기에 무슨 일이 일어 났는지 설명 할 수 있습니까? 나는 JS에 정통하지 않다. 나는 두려워한다. –
위의 업데이트로 설명했습니다. 나는 이것보다 더 자세한 내용을 알 수 없다고 생각한다. 나는 다음을 읽도록 권장한다 : 1. 기능 범위와 호출/적용 방법. 2. 모듈 패턴. –
JS 오류가 발생했습니다. Microsoft JScript 런타임 오류 : 개체가 'call'속성 또는 메서드를 지원하지 않습니다. –