我的网站在 300 多页中使用了 $(selector).load(path) 函数。现在我客户的需求变了,我需要跨域访问才能调用这些页面。
为此,我必须在 YQL 的帮助下将所有 .load( 函数替换为一些跨域函数。
是否可以覆盖我的 .load 函数并调用阻止默认值并执行我自己的代码?
最佳答案
没有干净的方法来做到这一点,特别是因为 $.fn.load
根据参数做不同的事情,替换它会影响所有这些子函数。
但是,jQuery supports AJAX hooks你可能能够实现你想要的。
如果您只需要支持 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
}
这与 jQuery 用来决定某人是否要绑定(bind) onload
事件或执行 AJAX 加载的检查完全相同。
关于javascript - 覆盖 jQuery 的 .load 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11153827/