ASP.NET Master Page + pageLoad()=杀死jquery?

时间:2009-05-28 16:02:44

标签: asp.net jquery master-pages

在我的MasterPage中,我有一个ScriptManager,它对我的​​jquery.js文件有一个ScriptReference。这一直没有问题,所有利用jquery的内容页都可以正常工作。

最近,我在MasterPage的末尾添加了以下javascript脚本块:

function pageLoad(sender, args) {
}

只需添加上面的pageLoad方法,就不会从我的任何内容页面执行jquery代码。为什么在Master Page中有一个pageLoad会产生这种效果?

提前感谢任何见解。

4 个答案:

答案 0 :(得分:2)

您可以在页面加载帮助中找到以下讨论。

http://encosia.com/2009/03/25/document-ready-and-pageload-are-not-the-same/

答案 1 :(得分:1)

看起来在我的母版页中使用Sys.Application.add_init()而不是document.ready()或pageLoad()解决了我的问题。

关于我的问题的详细信息可能过于冗长,但如果我尝试至少可以解释发生的事情,它可能对其他人有所帮助。

我的母版页有一个“导航”内容模板,它包含ASP.NET TreeView控件。我希望在回发后保持该TreeView的滚动位置(它有相当多的节点)。为了做到这一点,我在我的TreeView控件周围的div的onscroll事件上附加了对以下js函数的调用:

function SetDivScrollPosition() {
var strCook = document.cookie;
if (strCook.length > 0) {
    var cookies = strCook.split(";");
    for (var i = 0; i < cookies.length; i++) {
        var mySplit = cookies[i].split("=");
            document.getElementById(mySplit[0].replace(" ", "")).scrollTop = mySplit[1];
    }
}

}

但是,我在其他内容页面中也有其他可滚动的div,我想在回发后(全部或部分)跟踪那些可滚动的位置。所以,我要做的就是从那些内容页面的document.ready()函数中调用SetDivScrollPosition()。

答案 2 :(得分:1)

页面的渲染版本(或包含的.js文件)是否已经定义了pageLoad方法?如果是这种情况,那么您的页面可能会将pageLoad定义两次,这会导致您描述的问题。

答案 3 :(得分:0)

为什么你不能使用:

$(document).ready(function() {
   // do that funky thing
}