jq_extend.js 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. /**
  2. * desc: 对$进行扩展
  3. * author: wangyang
  4. * date: 2015-04-11
  5. */
  6. define(['config', 'native', 'zepto'], function(config, native, $) {
  7. (function($) {
  8. $.extend($, {
  9. getScript: function(src, func) {
  10. var script = document.createElement('script');
  11. script.async = 'async';
  12. script.src = src;
  13. if (func) {
  14. script.onload = func;
  15. }
  16. document.getElementsByTagName('head')[0].appendChild(script);
  17. },
  18. //根据域名判断使用ajax还是jsonP
  19. autoAjax: function(param) {
  20. param['no_sign'] = 1;
  21. if (location.host == 'yiguanjia.me') {
  22. $.ajax(param);
  23. } else {
  24. // api接口增加版本号
  25. param.data['version'] = config.o2oVersion;
  26. var url = param.url;
  27. if (url.indexOf('?') == -1) {
  28. url += '?';
  29. }
  30. if (url.charAt(url.length - 1) != '?') {
  31. url += '&';
  32. }
  33. url += 'callback=?';
  34. if (!!param.data) {
  35. if (url.charAt(url.length - 1) != '?') {
  36. url += '';
  37. }
  38. url += '&' + $.param(param.data);
  39. }
  40. $.ajaxJSONP({
  41. url: url,
  42. success: (!!param.success) ? param.success : null,
  43. error: (!!param.error) ? param.error : null
  44. })
  45. }
  46. },
  47. //带验证的ajax
  48. signAjax: function(options) {
  49. if (config.isIOS || config.isAndroid ) {
  50. var params = options.data;
  51. var sgf = options.success;
  52. options.success = function(res) {
  53. sgf(res);
  54. }
  55. if (!!!params.time) {
  56. params.time = new Date().getTime() / 1000;
  57. }
  58. sign_queue.push(options);
  59. if (sign_queue.length == 1) {
  60. native.getSign(sign_queue[0].data, sign_callback);
  61. }
  62. } else {
  63. this.autoAjax(options);
  64. }
  65. },
  66. //touch绑定事件的封装
  67. newTouch: function(el, callback, parent_dom) {
  68. var event = 'tap';
  69. if (!((window.DocumentTouch && document instanceof DocumentTouch) || 'ontouchstart' in window)) {
  70. event = 'click';
  71. }
  72. if (parent_dom !== undefined) {
  73. $(parent_dom).on(event, el, function(ev) {
  74. callback.call(this, ev);
  75. });
  76. } else {
  77. $(el).on(event, function(ev) {
  78. callback.call(this, ev);
  79. });
  80. }
  81. }
  82. })
  83. //由于加密是异步的,递归调用队列
  84. var sign_queue = [];
  85. function sign_callback(res) {
  86. var options = sign_queue.shift();
  87. options.data = res.data;
  88. $.autoAjax(options);
  89. if (sign_queue.length > 0) {
  90. native.getSign(sign_queue[0].data, sign_callback);
  91. }
  92. }
  93. })($);
  94. return $;
  95. })