سؤال

لدي ميزات SharePoint، يتم تنفيذه كل منهما (انظر أدناه)، والتي تضيف عناصر تحكم إلى عنصر تحكم مفوض في رأس صفحاتي. يعتمد أحد الضوابط على الآخر (واحد هو مكتبة مسج، والآخر يعتمد على 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.

هل كانت مفيدة؟

المحلول

كنت قادرا على العمل من خلال إضافة وفد ثاني إلى رأس ميديتي، وإضافة مسج إلى هذا المندوب. بهذه الطريقة، يمكنني التأكد من تحميل المسج دائما قبل كل شيء آخر، دون الحاجة إلى كتابة بعض المنطق لتأخير تحميل مكتباتي التابعة.

<SharePoint:DelegateControl runat="server" ControlId="jQueryDelegate" AllowMultipleControls="true"/>
<SharePoint:DelegateControl runat="server" ControlId="AdditionalPageHead" AllowMultipleControls="true"/>

نصائح أخرى

يبدو لي مثل سمة التسلسل يمكن استخدامها للتحكم في الترتيب الذي يتم فيه تقديم هؤلاء الرجال. امنح جهاز التحكم المسج الخاص بك تسلسلا من 50 وتفكيك التحكم في تسلسل 100 ويجب أن تكون جيدا.

انظر وثائق تفويض للسيطرة على MSDN لمزيد من المعلومات.

هل حاولت ضبط سمة DEFER = "DEFER" على البرنامج النصي.

من شأنها أن أخبر وكيل المستخدم أن البرنامج النصي يجب أن ينتظر حتى يتم تحميل الصفحة والعرض قبل تحميل البرنامج النصي.

آخر يمكنك اختراقها عن طريق تعيين متغير في البرنامج النصي الواحد، والتي تم ضبطها على TRUE عند تحميل البرنامج النصي. في الآخر، قمت بوضع المنطق الذي تم اختباره (فكر في حلقة وطريقة المهلة) إذا تم تحميل البرنامج النصي ثم يستدعي منطقك عند تحميل كلا النصين.

ليست لطيفة جدا، لكنك تحتاج إلى نوع من المنطق للتعامل مع التنفيذ، وليس فقط تشغيل الأساليب مضمنة في البرنامج النصي الخاص بك.

إلى ناثان: يتم استخدام تسلسل المندوبين لتحديد أي من الضوابط المنهة لتحميل. هذا لا ينبغي أن لا علاقة له بالمسألة المعنية. كما أفهمها أن ملفات JS فقط قم بتعيين القيمة على البرنامج النصي الذي يحدث فقط لتكون عنصر تحكم مفوض.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top