的SharePoint DelegateControl渲染订单
-
09-09-2019 - |
题
我有两个SharePoint功能,各相同实现(见下文),该控件添加到我的网页的标题的委托控制。其中一个控件取决于其它(一个是jQuery库,另一个取决于jQuery的),然而,当呈现控件,这些控件的顺序不正确。如何指定这些控件在呈现的顺序?
控制(两者都是相同的,除了它们引用不同js文件):
<%@ Control ClassName="MyScriptControl" %>
<script type="text/javascript" src="/_layouts/MyScript.js"></script>
feature.xml的:
<?xml version="1.0" encoding="utf-8" ?>
<Feature Id="AA9D59AC-D53E-4338-9B52-CD39F2A8C31A"
ActivateOnDefault="true"
Title="My Feature"
Description="Does something."
Scope="Site" Version="1.0.0.0"
Hidden="FALSE"
DefaultResourceFile="core"
xmlns="http://schemas.microsoft.com/sharepoint/">
<ElementManifests>
<ElementManifest Location="MyFeature\Elements.xml" />
</ElementManifests>
</Feature>
Elements.xml的:
<?xml version="1.0" encoding="utf-8" ?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/"
Id="24A4BB9A-9636-4a73-B3A5-35661DE19902">
<Control Id="AdditionalPageHead"
ControlSrc="~/_controltemplates/MyControl.ascx" />
</Elements>
页面上的输出(jQuery是DependsOnjQuery之前展开):
<script type="text/javascript" src="/_layouts/DependsOnjQuery.js"></script>
<script type="text/javascript" src="/_layouts/jQuery.min.js"></script>
我想MyControl1.js到MyControl2.js之前呈现。
解决方案
我能够得到这个通过添加第二个DelegateControl到我的母版的标题,并加入jQuery来该委托的工作。这样一来,我可以确保jQuery将始终一切之前加载,而无需编写一些逻辑来耽误我依赖库的加载。
<SharePoint:DelegateControl runat="server" ControlId="jQueryDelegate" AllowMultipleControls="true"/>
<SharePoint:DelegateControl runat="server" ControlId="AdditionalPageHead" AllowMultipleControls="true"/>
其他提示
有我看来像序列属性可以被用来控制这些球员呈现的顺序。给你的jQuery控制的50序列,你DependsOnjQuery控制在100序列,你应该是不错的。
有关的详细信息请参阅委派控制上MSDN 文档。
你尝试并设置DEFER = “遵循” 的脚本属性。
这会告诉用户代理脚本应该等待页面加载和渲染加载脚本之前。
否则你可以通过设置在一个脚本变量本事,加载脚本时设置为true。在其他的你放置在测试(认为环路和超时方法)如果脚本加载逻辑,然后调用时这两个脚本被加载的逻辑。
不是很漂亮,但你需要某种逻辑来处理的执行,而不是仅仅运行方式内嵌在你的脚本。
要森:在代表序列用于确定其中代表对照加载。这应该什么都没有做与有关的问题。据我所知的JS文件只是设置该恰好是一个委托控制脚本的值。
不隶属于 StackOverflow