2017-06-01 92 views
0

當我單擊模塊選擇對話框內的模塊時,DNN刷新頁面(懸停前,可拖動元素出現在頁面上)。這隻發生在我們的皮膚上(https://github.com/2sic/dnn-theme-bootstrap3-instant)。防止頁面重新加載模塊選擇DNN 9

DNN正在尋找使用Teleriks findComponent方法的元素#dnn_ContentPane_SyncPanel(這似乎是一個ajax包裝)。由於無法找到元素,DNN執行頁面重新加載。

我們的皮膚內容窗格:

<div id="ContentPane" runat="server" containertype="G" containername="Invisible Container" containersrc="default.ascx"></div> 

DNN的代碼,觸發重載(一個函數調用):

refreshPane: function (paneName, args, callback, callOnReload) { 
    var paneId; 
    if (!paneName) { 
     paneId = this.getModuleManager().getPane().attr('id'); 
    } else { 
     paneId = this.getPaneById(paneName).attr('id'); 
    } 

    var pane = $('#' + paneId); 
    var parentPane = pane.data('parentpane'); 
    if (parentPane) { 
     this.refreshPane(parentPane, args, callback); 
     return; 
    } 
    //set module manager to current refresh pane. 
    this._moduleManager = pane.data('dnnModuleManager'); 
    var ajaxPanel = $find(paneId + "_SyncPanel"); 
    if (ajaxPanel) { 
     //remove action menus from DOM bbefore fresh pane. 
     var handler = this; 
     pane.find('div.DnnModule').each(function() { 
      var moduleId = handler._moduleManager._findModuleId($(this)); 
      $('#moduleActions-' + moduleId).remove(); 
     }); 

     Sys.WebForms.PageRequestManager.getInstance().add_endRequest(this._refreshCompleteHandler); 
     this._refreshPaneId = paneId; 
     this._refreshCallback = callback; 
     ajaxPanel.ajaxRequest(args); 
    } else { 
     //save the args into cookie, after page reload then catch the cookie 
     //and float the module for drag 
     if (args && !this._noFloat) { 
      this._setCookie('CEM_CallbackData', args); 
     } 

     if (callOnReload && typeof callback == "function") { 
      callback.call($('#' + paneId), [true]); 
     } 

     location.reload(); 
    } 
} 

回答

0

一段時間後,我們發現了什麼問題了。 我們的皮膚使用<%=SkinPath%>語法而不是<%#SkinPath%>,這導致DNN強制重新加載。這可能與文檔的生命週期有關。

相關問題