2015-11-06 76 views
2

多的document.ready我有再次衍生形式母版頁多的內容頁,避免內容的母版頁

每個內容頁需要在加載一些初始化事件也是如此母版頁。

目前我做這樣的

母版頁

<script type="javascript"> 
$(document).ready({ 
// Initialize my master page events code 
}); 
</script> 
<asp:ContentPlaceHolder ID="cphSalesTrackerScripts" runat="server"> 
</asp:ContentPlaceHolder> 

內容頁1

<asp:Content ID="cntBodyScripts" contentPlaceHolderID="cphSalesTrackerScripts" runat="server"> 
    <script type="javascript"> 
    $(document).ready({ 
    // Initialize my content page 1 events code 
}); 
</script> 
</asp:Content> 

內容頁2

<asp:Content ID="cntBodyScripts" contentPlaceHolderID="cphSalesTrackerScripts" runat="server"> 
    <script type="javascript"> 
    $(document).ready({ 
    // Initialize my content page 2 events code 
}); 
</script> 
</asp:Content> 

我是學習最好的編碼技術Here

和它說每頁

僅使用一個文件準備好處理。

所以如何管理single ready每個內容頁......因爲母版頁和內容頁在瀏覽器和我的方案一起渲染有two ready handler

回答

0

發生在頁腳預文件和呼叫腳本它的所有網頁上,然後將一個的document.ready,並將所有功能,自定義JS的東西變成有:

Jquery(document).ready(function() { 
    // some code 

    // other code 
} 
0

我看不到在使用多個document.ready問題。但是,如果你想只有一個,你可以做兩件事情:

  1. 包括母版頁的<script>標籤內的佔位符。然後,在您的內容頁面中,您必須只提供JavaScript代碼,而不要在主腳本中公開一個回調,並在內容頁面中提供該代碼。如果可用,從主頁面調用它。

第二個想法是這樣的:

在母版頁:

$(document).ready({ 
    // Initialize my master page events code 

    // run the content page callback if available 
    if (window.contentCallback) { contentCallback(); }; 
}); 

在內容頁:

window.contentCallback = function() { 
    // content page code to run on document.ready 
}; 

請注意,我使用全局對象window在內容頁面和母版頁之間共享它。這實在是一個非常糟糕的主意,但使用ASP.NET有必要做這種黑客行爲。

在母版頁:

window.MyApp = {}; // Create empty object 

$(document).ready({ 
    // Initialize my master page events code 

    // run the content page callback if available 
    if (MyApp.contentCallback) { contentCallback(); }; 
}); 

在內容頁

但是,您可以通過至少包括自己的對象的回調,不污染全球有很多事情改進:

MyApp.contentCallback = function() { 
    // content page code to run on document.ready 
}; 
0

在你的母版,

<script src="/js/global.js" type="text/javascript"></script> 
    <asp:ContentPlaceHolder ID="AdditionalScripts" runat="server" /> 

    <script type="text/javascript"> 
     $(document).ready(function() { 
      initMain(window.jQuery, window); // Code in global.js 
      initPage(window.jQuery, window); 
     }); 
    </script> 

而在你的所有內容頁:

<asp:Content runat="server" ContentPlaceHolderID="AdditionalScripts"> 
    <script src="/js/pageX.js" type="text/javascript"></script>  
</asp:Content> 

終於在pageX.js:

function initPage($, window) { 
    // Init this Page 
}