Page Layout里的javascript (jquery)不执行

在page layout 中通过 _spBodyOnLoadFunctionNames.push("js 方法名") 的方式实现。

但切记,代码要放到 PlaceHolderMain 内部执行。

在page layout PlaceHolderMain 区域内直接写,或者在该区域引入js文件皆可。。。

e.g.

    _spBodyOnLoadFunctionNames.push("GenerateRightNavList");
function GenerateRightNavList() { var currurl = location.href; // pages using business page layout if ($("#hidnIsBusinessPageLayOut").length > 0) { var urlparts = currurl.split("/"); if (urlparts != null && urlparts.length > 2) { var itemName = urlparts[urlparts.length - 2]; $("#nav-block>div.widget-header:eq(0)").text(itemName.replace("-", " ")); var filterUrl = currurl.substring(0, currurl.lastIndexOf("/") + 1); //alert($("ul.primary-menu>li.menu-item>a[href^='"+filterUrl+"']").length); $("ul.sub-menu>li.menu-item>a[href^='" + filterUrl + "']").each(function () { $("#menu-shortcodes").append('<li class="menu-item menu-item-type-post_type menu-item-object-page"><a href="' + $(this).attr("href") + '">' + $(this).find("span:eq(0)").text() + '</a></li>'); }); var pstring = ""; var cstring = ""; var itemobj = $("ul.primary-menu>li.menu-item>a[href^='" + filterUrl + "']:eq(0)"); var subitemobj = $("ul.sub-menu>li.menu-item>a[href='" + currurl + "']:eq(0)"); if (itemobj.length > 0) { pstring = $.trim(itemobj.find("span:eq(0)").text()); } if (subitemobj.length > 0) { cstring = $.trim(subitemobj.find("span:eq(0)").text()); } var breadString = pstring + (cstring != "" ? ': ' + cstring : ""); $("#breadcrumbs").append('You are here: <a href="/home">Home</a> / ' + breadString); } } }

 or

<script type="text/javascript" src="/Scripts/layout.js"></script>

 

PS:

http://social.msdn.microsoft.com/Forums/sharepoint/en-US/c5c36734-b098-45a4-adf5-703fdc77e43d/why-isnt-my-function-loading-using-spbodyonloadfunctionnamespush

http://blogit.create.pt/blogs/andrevala/archive/2007/12/16/WSS-Tip-_2300_19_3A00_-Using-JavaScript-in-Body-OnLoad-Event.aspx

 

posted @ 2013-09-04 12:39  山村果园  阅读(357)  评论(0编辑  收藏  举报