jq_extend.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  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.club') {
  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. })