|
43 | 43 | *
|
44 | 44 | * @type string
|
45 | 45 | **/
|
46 |
| - Mobilebone.VERSION = '2.5.1'; |
| 46 | + Mobilebone.VERSION = '2.5.2'; |
47 | 47 |
|
48 | 48 | /**
|
49 | 49 | * Whether catch attribute of href from element with tag 'a'
|
|
159 | 159 | if (arguments.length == 0 || pageInto == pageOut) return;
|
160 | 160 | if (arguments.length == 3 && isNaN(back * 1) == true) {
|
161 | 161 | options = back;
|
162 |
| - back = false; |
| 162 | + back = options.back; |
163 | 163 | };
|
| 164 | + |
164 | 165 | //if those parameters is missing
|
165 | 166 | pageOut = pageOut || null, back = back || false, options = options || {};
|
166 | 167 |
|
|
535 | 536 |
|
536 | 537 | // get page-title from eleOrObj or options
|
537 | 538 | var page_title, id_container, classPageInside;
|
| 539 | + |
538 | 540 | if (eleOrObj) {
|
539 | 541 | if (eleOrObj.nodeType == 1) {
|
540 | 542 | // legal elements
|
|
552 | 554 | if (eleOrObj.tagName.toLowerCase() == "form" || (isreload !== null && isreload != "false")) {
|
553 | 555 | optionsTransition.reload = true;
|
554 | 556 | }
|
| 557 | + // v2.5.2 |
| 558 | + // is back? for issues #128 |
| 559 | + optionsTransition.back = eleOrObj.getAttribute("data-rel") == "back"; |
555 | 560 | } else {
|
556 | 561 | response = eleOrObj.response || options.response;
|
557 | 562 | page_title = eleOrObj.title || options.title;
|
558 | 563 | container = eleOrObj.container || options.container;
|
559 | 564 | classPageInside = eleOrObj.classPage || options.classPage;
|
560 | 565 | optionsTransition.target = eleOrObj.target;
|
| 566 | + // v2.5.2 |
| 567 | + // is back? for issues #128 |
| 568 | + optionsTransition.back = eleOrObj.back || options.back; |
561 | 569 | }
|
562 | 570 | if (container && classPageInside) classPage = classPageInside;
|
563 | 571 | }
|
|
659 | 667 | /**
|
660 | 668 | * For ajax request to get HTML or JSON.
|
661 | 669 |
|
662 |
| - * @params trigger_or_options - Necessary |
| 670 | + * @params aOrFormOrObj - Necessary |
663 | 671 | 1. dom-object:<a>|<form>.
|
664 | 672 | 2. object.
|
665 | 673 | * @returns undefined
|
|
670 | 678 | });
|
671 | 679 | *
|
672 | 680 | **/
|
673 |
| - Mobilebone.ajax = function(trigger_or_options) { |
674 |
| - if (!trigger_or_options) return; |
| 681 | + Mobilebone.ajax = function(aOrFormOrObj) { |
| 682 | + if (!aOrFormOrObj) return; |
675 | 683 |
|
676 | 684 | // default params
|
677 | 685 | var defaults = {
|
|
690 | 698 |
|
691 | 699 | var params = {}, ele_mask = null, formData = null;
|
692 | 700 |
|
693 |
| - // if 'trigger_or_options' is a element, we should turn it to options-object |
| 701 | + // if 'aOrFormOrObj' is a element, we should turn it to options-object |
694 | 702 | var params_from_trigger = {}, attr_mask;
|
695 |
| - if (trigger_or_options.nodeType == 1) { |
696 |
| - params_from_trigger = _queryToObject(trigger_or_options.getAttribute("data-params") || ""); |
| 703 | + if (aOrFormOrObj.nodeType == 1) { |
| 704 | + params_from_trigger = _queryToObject(aOrFormOrObj.getAttribute("data-params") || ""); |
697 | 705 | // get params
|
698 | 706 | for (key in defaults) {
|
699 | 707 | // data-* > data-params > defaults
|
700 |
| - params[key] = trigger_or_options.getAttribute("data-" + key) || params_from_trigger[key] || defaults[key]; |
| 708 | + params[key] = aOrFormOrObj.getAttribute("data-" + key) || params_from_trigger[key] || defaults[key]; |
701 | 709 | if (typeof defaults[key] == "function" && typeof params[key] == "string") {
|
702 | 710 | // eg. globalObject.functionName
|
703 | 711 | params[key] = this.getFunction(params[key]);
|
|
707 | 715 | }
|
708 | 716 | }
|
709 | 717 |
|
710 |
| - // ajax的url地址 |
711 |
| - params.url = this.getCleanUrl(trigger_or_options, params.url); |
712 |
| - params.target = trigger_or_options; |
| 718 | + // address of ajax url |
| 719 | + params.url = this.getCleanUrl(aOrFormOrObj, params.url); |
| 720 | + params.target = aOrFormOrObj; |
| 721 | + // v2.5.2 |
| 722 | + // is back? for issues #128 |
| 723 | + params.back = aOrFormOrObj.getAttribute("data-rel") == "back"; |
713 | 724 |
|
714 |
| - var tagName = trigger_or_options.tagName.toLowerCase(); |
| 725 | + var tagName = aOrFormOrObj.tagName.toLowerCase(); |
715 | 726 | if (tagName == "form") {
|
716 |
| - params.type = trigger_or_options.method; |
| 727 | + params.type = aOrFormOrObj.method; |
717 | 728 |
|
718 |
| - formData = new FormData(trigger_or_options); |
| 729 | + formData = new FormData(aOrFormOrObj); |
719 | 730 | }
|
720 | 731 |
|
721 | 732 | // get mask element
|
722 |
| - attr_mask = trigger_or_options.getAttribute("data-mask"); |
| 733 | + attr_mask = aOrFormOrObj.getAttribute("data-mask"); |
723 | 734 | if (attr_mask == "true" || attr_mask == "") {
|
724 |
| - ele_mask = trigger_or_options.querySelector("." + this.classMask); |
| 735 | + ele_mask = aOrFormOrObj.querySelector("." + this.classMask); |
725 | 736 | }
|
726 | 737 | }
|
727 |
| - // if 'trigger_or_options' is a object |
728 |
| - else if (trigger_or_options.url) { |
| 738 | + // if 'aOrFormOrObj' is a object |
| 739 | + else if (aOrFormOrObj.url) { |
729 | 740 | // get params
|
730 | 741 | for (key2 in defaults) {
|
731 |
| - params[key2] = trigger_or_options[key2] || defaults[key2]; |
| 742 | + params[key2] = aOrFormOrObj[key2] || defaults[key2]; |
732 | 743 | }
|
733 | 744 | // get url
|
734 | 745 | params.url = this.getCleanUrl(null, params.url, params.data);
|
735 | 746 | // here params.title will become page title;
|
736 |
| - params.title = trigger_or_options.title; |
| 747 | + params.title = aOrFormOrObj.title; |
| 748 | + // v2.5.2 |
| 749 | + // is back? for issues #128 |
| 750 | + // when history.back() |
| 751 | + params.back = aOrFormOrObj.back; |
737 | 752 | } else {
|
738 | 753 | return;
|
739 | 754 | }
|
|
748 | 763 | ele_mask.className = this.classMask;
|
749 | 764 | ele_mask.innerHTML = '<i class="loading"></i>';
|
750 | 765 | if (typeof attr_mask == "string") {
|
751 |
| - trigger_or_options.appendChild(ele_mask); |
| 766 | + aOrFormOrObj.appendChild(ele_mask); |
752 | 767 | } else {
|
753 | 768 | document.body.appendChild(ele_mask);
|
754 | 769 | }
|
|
770 | 785 | try {
|
771 | 786 | response = JSON.parse(xhr.response);
|
772 | 787 | params.response = response;
|
773 |
| - Mobilebone.createPage(Mobilebone.jsonHandle(response), trigger_or_options, params); |
| 788 | + Mobilebone.createPage(Mobilebone.jsonHandle(response), aOrFormOrObj, params); |
774 | 789 | } catch (e) {
|
775 | 790 | params.message = "JSON parse error:" + e.message;
|
776 | 791 | params.error.call(params, xhr, xhr.status);
|
|
785 | 800 | // as json
|
786 | 801 | response = JSON.parse(xhr.response);
|
787 | 802 | params.response = response;
|
788 |
| - Mobilebone.createPage(Mobilebone.jsonHandle(response), trigger_or_options, params); |
| 803 | + Mobilebone.createPage(Mobilebone.jsonHandle(response), aOrFormOrObj, params); |
789 | 804 | } catch (e) {
|
790 | 805 | // as html
|
791 | 806 | response = xhr.response;
|
792 |
| - Mobilebone.createPage(response, trigger_or_options, params); |
| 807 | + Mobilebone.createPage(response, aOrFormOrObj, params); |
793 | 808 | }
|
794 | 809 | } else {
|
795 | 810 | response = xhr.response;
|
796 | 811 | // 'response' is string
|
797 |
| - Mobilebone.createPage(response, trigger_or_options, params); |
| 812 | + Mobilebone.createPage(response, aOrFormOrObj, params); |
798 | 813 | }
|
799 | 814 | params.success.call(params, response, xhr.status);
|
800 | 815 | } else {
|
|
949 | 964 | if (target.getAttribute("data-rel") == "external"
|
950 | 965 | || ajax == "false"
|
951 | 966 | || (href.replace("://", "").split("/")[0] !== location.href.replace("://", "").split("/")[0] && ajax != "true")
|
952 |
| - || (Mobilebone.captureLink == false && ajax != "true") |
953 | 967 | ) return;
|
954 | 968 | event.preventDefault();
|
955 |
| - }); |
| 969 | + }); |
956 | 970 | }
|
957 | 971 | }
|
958 | 972 | // Important:
|
|
1185 | 1199 | // as a url
|
1186 | 1200 | Mobilebone.ajax({
|
1187 | 1201 | url: hash,
|
1188 |
| - dataType: "unknown" |
| 1202 | + dataType: "unknown", |
| 1203 | + back: Mobilebone.isBack() |
1189 | 1204 | });
|
1190 | 1205 | return;
|
1191 | 1206 | }
|
|
0 commit comments