Kha*_*eed 1 javascript jquery overriding
我有超过300页使用$(selector).load(path)函数的站点.现在我的客户的要求已经改变,我需要访问跨域来调用这些页面.
出于此目的,我必须在YQL的帮助下替换所有.load(函数到某些跨域函数).
是否可以覆盖我的.load函数并调用prevent default并执行我自己的代码?
没有干净的方法可以做到这一点,特别是因为$.fn.load根据参数做出不同的事情并替换它会影响所有这些子功能.
但是,jQuery 支持AJAX钩子,你可以实现你想要的.
如果您只需要支持IE的XDomainRequest,请查看此插件:https://github.com/jaubourg/ajaxHooks/blob/master/src/ajax/xdr.js
无论如何,如果你真的想要替换jQuery的ajax加载函数,这段代码应该这样做:
var _load = $.fn.load;
$.fn.load = function(url, params, callback) {
if(typeof url !== "string") {
return _load.apply(this, arguments);
}
// do your ajax stuff here
}
Run Code Online (Sandbox Code Playgroud)
这与jQuery用于决定是否有人想绑定onload事件或执行AJAX加载的检查完全相同.
在我看来,最合理的方法是不要重载 jquery 函数,而是简单地在您最喜欢的编辑器中进行搜索和替换以替换$(xxx).load(为yourpackage.load(xxx,.
即使对于 300 个 js 文件,这也可以在几分钟内完成。未来的更改将更容易,代码也将更具可读性,因为读者永远不会期望 jquery 函数执行文档中没有的操作。
| 归档时间: |
|
| 查看次数: |
1855 次 |
| 最近记录: |