我正在尝试在某些第 3 方代码出现模式对话框后运行我们的 JavaScript 片段。我看见劫持 jQuery show 函数的一个非常巧妙的想法 https://stackoverflow.com/a/1225238/135968,但不幸的是它不起作用。我猜想这个想法曾经在 2009 年的旧版本 jQuery 上有效,但现在在最新版本上不起作用。这是一个带有实现和示例的 jsFiddle:
http://jsfiddle.net/mkmurray/drv5w/2/ http://jsfiddle.net/mkmurray/drv5w/2/
正如您通过运行示例所看到的,它将警告“beforeShow”事件,但不会警告“afterShow 事件”,并且通过一些调试,我可以看到它没有完全调用“newCallback”函数。
预先感谢您提供的任何帮助。
看起来我能够找到解决方案。它涉及到原始版本的一些错误因素:
- 自从我看到代码的原始编写以来,jQuery 添加了另一个名为
easing
。这真的搞乱了我委托给原来的人的方式show
jQuery 中的方法通过调用_oldShow.apply(...)
.
- 解决这个问题后,我发现有时
show
方法调用一系列其他方法,有时会递归调用show
再次。我需要一种方法来不让我的实现拦截这些递归调用;我发现如果有一个我可以信赖selector
财产与否。
可以在这个 jsFiddle 找到一个有效的实现:
http://jsfiddle.net/mkmurray/drv5w/27/ http://jsfiddle.net/mkmurray/drv5w/27/
这个实现很大程度上依赖于 jQuery 不改变方法签名show
方法虽然。所以你几乎必须决定是否要修改你的第 3 方 jQuery 插件而不是这样做。无论哪种方式,如果您想获取最新的第 3 方插件或最新的 jQuery,一些新的更改可能会破坏您的实现。所以这个解决方案并不一定比修改第三方插件更好或更差。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)