覆盖 jQuery 函数失去 'this' 范围
Overriding jQuery function loses 'this' scope
我正在尝试实现另一个问题的以下答案:
基本上我需要向 jQuery 函数添加额外的检查。以下代码在 jQuery 库中:
但是我不能修改原来的jQuery,所以我在一个单独的文件中创建一个补丁。我正在做的是重写查找功能并添加如下功能:
(function() {
var originalFind = jQuery.fn.find;
jQuery.fn.find = function () {
try {
document === document;
}
catch (err) {
document = window.document;
}
return originalFind.apply(this, arguments);
};
})();
函数被正确覆盖,但是,当代码调用 'find' 时,我的 'try' 没有抛出任何异常,因为范围与 Sizzle 函数内部的范围不同,所以原来的问题仍然存在。
我也试过复制所有的 Sizzle 代码,添加我的修改并将其分配给 jQuery.fn.find 如上所述,但是范围问题仍然存在并且发生了一些崩溃。
我需要先设置 'document' 才能进行以下检查,否则会因权限被拒绝而崩溃:
我如何共享范围以便 try/catch 可以正确完成?有可能吗?还有其他想法吗?
谢谢
我正在尝试实现另一个问题的以下答案:
基本上我需要向 jQuery 函数添加额外的检查。以下代码在 jQuery 库中:
但是我不能修改原来的jQuery,所以我在一个单独的文件中创建一个补丁。我正在做的是重写查找功能并添加如下功能:
(function() {
var originalFind = jQuery.fn.find;
jQuery.fn.find = function () {
try {
document === document;
}
catch (err) {
document = window.document;
}
return originalFind.apply(this, arguments);
};
})();
函数被正确覆盖,但是,当代码调用 'find' 时,我的 'try' 没有抛出任何异常,因为范围与 Sizzle 函数内部的范围不同,所以原来的问题仍然存在。
我也试过复制所有的 Sizzle 代码,添加我的修改并将其分配给 jQuery.fn.find 如上所述,但是范围问题仍然存在并且发生了一些崩溃。
我需要先设置 'document' 才能进行以下检查,否则会因权限被拒绝而崩溃:
我如何共享范围以便 try/catch 可以正确完成?有可能吗?还有其他想法吗?
谢谢