我正在尝试从另一个问题中实现以下答案:https://stackoverflow.com/a/26469105/2402594基本上,我需要向jQuery函数添加额外的检查。以下代码在jQuery库中:但是我无法修改原始的jQuery,因此我在一个单独的文件中创建了一个补丁。我正在做的是覆盖find函数并添加功能,如下所示:(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,但是范围问题仍然存在,并且会发生崩溃。我需要先设置“文档”,然后才能进行以下检查,否则由于权限被拒绝而崩溃:我如何共享范围,以便可以正确完成try / catch?可能吗?还有其他想法吗?
1 回答

呼唤远方
TA贡献1856条经验 获得超11个赞
众所周知,JavaScript具有函数作用域:每个函数都创建一个新作用域。范围确定这些变量的可访问性(可见性)。从函数外部无法访问(可见)在函数内部定义的变量。
因此,如果文档是在JQuery库函数中定义的,我认为您将无法访问它。您可以尝试定义一个全局变量来存储文档,然后可以在JQuery库函数和重写函数中对其进行访问。
添加回答
举报
0/150
提交
取消