我想扩展$ .mobile.changePage来接受更多的选项,比如为页面完成加载时添加一个回调函数,以及像contentType这样的AJAX调用的更多选项。有没有办法做到这一点,而无需更改源代码?如果不是,我愿意为教育目的更改源代码,但无法在jQuery Mobile GitHub中找到它:https://github.com/jquery/jquery-mobile。感谢您的帮助或指导。
1
A
回答
2
JavaScript中更令人激动的部分之一是能够使用通常被称为Monkey Patching的技术重新定义任何函数。 (顺便ES5提供了一种新freeze方法,它允许开发人员能够防止这样的修改。)
这里的一个的JavaScript猴补丁的示例,其允许我们修改函数的行为,而无需编辑它的源:
// A namespace object.
var Example = {};
// Sums two values.
Example.sum = function (a, b) {
return a + b;
}
// Usage:
var result = Example.sum(1, 2);
假设我们想记录添加到数总和法,我们可以只添加一个console.log
线的功能,但我们也可以猴子打补丁:
// Store a reference to the current 'Example.sum' function.
var originalSum = Example.sum;
// Now redeclare Example.sum...
Example.sum = function (a, b) {
// Call the originalSum function first...
var result = originalSum(a, b);
// Now add some logging...
console.log("Example.sum(" + a + ", " + b + ") yields " + result);
return result;
};
现在,当Example.sum
是所谓的,不仅我们会像以前一样得到结果,而且还会写一个控制台消息。考虑到这一点,就可以猴子修补$.mobile.changePage
方法以同样的方式:
var originalChangePage = $.mobile.changePage;
// Redefine `changePage` so it accepts a 'complete' function in the options
// object which will be invoked when the page change is complete.
$.mobile.changePage = function (to, options) {
if (typeof options.complete === "function") {
$(body).one("pagechange", function (event) {
options.complete(event);
});
}
originalChangePage(to, options);
};
相关问题
- 1. 接受多个选项栏
- 2. 我可以通过PHP更改已接受的扩展吗?
- 3. 扩展DropDownList以包含额外选项
- 4. EditorGUILayout Popup在下拉选项更改后不接受更改
- 5. 浏览器今天接受插件还是只接受扩展?
- 6. 接受null的扩展方法的可接受名称
- 7. 扩展PHP类不接受变量
- 8. 扩展@NotEmpty接受其他类
- 9. 扩展BitMap类。将addChild()接受子类?
- 10. HTTP是否接受扩展独占?
- 11. 扩展JQuery UI选项卡
- 12. 在XSD中扩展选项
- 13. 扩展选项w /原因
- 14. Chrome扩展 - 选项卡数
- 15. XmlBuilder.processing可以接受更多参数吗?
- 16. 哪个名字是可以接受的类扩展抽象类?
- 17. 扩展Django的页面以接受模板标签
- 18. 扩展DataList以接受来自LinkButtons的新InsertCommand
- 19. DialogResult筛选多个扩展
- 20. Eshell sudo不接受选项
- 21. 如何直接链接到扩展的常见问题选项
- 22. 动态扩展选择选项背景
- 23. 给予用户选项以选择扩展权限
- 24. Primefaces图表+ jqplot扩展器 - 在扩展与jqplot选项y轴
- 25. Chrome扩展程序 - 修改Google日历事件UI以通过输入字段接受扩展属性
- 26. 从Chrome新选项卡扩展名接收postMessage
- 27. clBuild选项,传递OpenCL扩展
- 28. 将Highcharts选项作为插件扩展
- 29. 没有/默认选项水银扩展
- 30. 在Chrome扩展选项中验证Jquery
刚刚成立的伪页面被委派'pageshow'或类似的事件处理程序,这是已经存在的功能。 – Jasper 2012-08-15 20:31:29