我有两个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文件只是设置该恰好是一个委托控制脚本的值。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top