docs: function pageFinishTransitioneEndCallback(e) {
    const self = this;
  
    /***
     * 如果当前页面的transition为material则肯定不会执行webkitTransitionEnd事件
     */
    if ((e.type === "webkitTransitionEnd" && e.target.getAttribute("data-ct-data-role") !== "page") ||
      (e.type === "webkitAnimationEnd" && e.target.getAttribute("data-ct-data-role") !== "page")) {
      return;
    }
  
    e.stopPropagation();
    e.preventDefault();
  
    /***
     */
    self.getPageDOM().classList.remove("materialHide");
  
    /***
     * 当前页隐藏
     */
    self.getPageDOM().classList.remove("active");
    self.ctmobile.maskDOM.style.display = "none";
    self.changeKey = false;
  
    /***
     * 删除DOM
     */
    const ctDataMode = self.ctmobile.getPageConfigAttribute(self.pageId, 'mode');
    if (ctDataMode.toLowerCase().indexOf("singleinstance") === -1) {
      const unmountFlag = ReactDOM.unmountComponentAtNode(self.getPageDOM());
      if (unmountFlag) {
        self.getPageDOM().parentNode.removeChild(self.getPageDOM());
      }
    }
  
    if (self.ctmobile.getHistoryLength() > 1) {
      const lastPrePageIndex = self.ctmobile.getHistoryLength() - 2;
  
      /***
       * 当前页之前页恢复之后事件
       */
      self.ctmobile.fireEvent(self.ctmobile.getPageByIndex(lastPrePageIndex).getPageDOM(), "pageAfterRestore");
  
      /***
       * 如果当前页是带有返回值的页
       */
      if (
        (ctDataMode.toLowerCase().lastIndexOf("result") !== -1) &&
        self.resultIntent &&
        self.resultIntent.resultCode
      ) {
        self.ctmobile.fireEvent(
          self.ctmobile.getPageByIndex(lastPrePageIndex).getPageDOM(),
          "pageResult",
          [self.resultIntent.resultCode, self.resultIntent.bundle]
        );
      }
    }
  
    /***
     * 出stack
     */
    self.ctmobile.router.removeLastPage();
  
    if (self.pageTransitionEndCallback) {
      self.pageTransitionEndCallback();
    }
  }