سؤال

أنا أعمل مع كليهما amq.js (أكتيف إم كيو) و خرائط جوجل.أقوم بتحميل البرامج النصية الخاصة بي بهذا الترتيب

<head>
    <meta http-equiv="content-type" content="text/html;charset=UTF-8" />
    <title>AMQ & Maps Demo</title>

    <!-- Stylesheet -->
    <link rel="stylesheet" type="text/css" href="style.css"></link>

    <!-- Google APIs -->
    <script type="text/javascript" src="http://www.google.com/jsapi?key=abcdefg"></script>

    <!-- Active MQ -->
    <script type="text/javascript" src="amq/amq.js"></script>
    <script type="text/javascript">amq.uri='amq';</script>

    <!-- Application -->
    <script type="text/javascript" src="application.js"></script>
</head>

ومع ذلك، في ملف application.js الخاص بي، يتم تحميل الخرائط بشكل جيد ولكني أتلقى خطأً عند محاولة الاشتراك في موضوع باستخدام AMQ.يعتمد AMQ على النموذج الأولي الذي تقول وحدة التحكم في الأخطاء في Firefox أن الكائن لم يتم تعريفه.أعتقد أن لدي مشكلة في استخدام كائن amq قبل انتهاء تحميل البرنامج النصي. هل هناك طريقة للتأكد من تحميل كلا البرنامجين قبل أن أستخدمهما في application.js الخاص بي؟

لدى Google هذه المكالمة الوظيفية الرائعة google.setOnLoadCallback(initialize); الذي يعمل بشكل رائع.لست متأكدًا من أن amq.js لديه شيء كهذا.

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

المحلول

هل هناك طريقة للتأكد من تحميل كلا البرنامجين قبل أن أستخدمهما في application.js الخاص بي؟

يجب تحميل ملفات JavaScript بشكل تسلسلي وكتلة لذلك ما لم تكن البرامج النصية التي تعتمد عليها تفعل شيئًا غير عادي، فكل ما عليك فعله هو تحميل application.js بعد الملفات الأخرى.

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

نصائح أخرى

يتم تحميل البرامج النصية عبر المجال بعد البرامج النصية للموقع نفسه، ولهذا السبب تحصل على الأخطاء.ومن المثير للاهتمام أن لا أحد يعرف هذا هنا.

في jquery يمكنك استخدام:

$(document).ready(function(){/*do stuff here*/});

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

في النموذج الأولي يبدو أن هذا قد ينجح

document.observe("dom:loaded", function() {/*do stuff here*/});

إذا فهمت مشكلتك بشكل صحيح..أعتقد أن ذلك قد يساعد..

إذا كنت لا تريد الاعتماد على lib للقيام بذلك ...أعتقد أن هذا قد ينجح:

<script>
   function doIt() {/*do stuff here*/}
</script>
<body onLoad="doIt();"></body>

لقد واجهت مشكلة مماثلة لهذه، فقط مع برنامج نصي واحد.الحل الذي توصلت إليه هو الاستخدام addEventListener("load",fn,false) إلى أ script الكائن الذي تم إنشاؤه باستخدام document.createElement('script') هذه هي الوظيفة النهائية التي تقوم بتحميل أي ملف JS قياسي وتتيح لك إضافة برنامج نصي "للتحميل اللاحق".

function addJavaScript( js, onload ) {
   var head, ref;
   head = document.getElementsByTagName('head')[0];
   if (!head) { return; }
   script = document.createElement('script');
   script.type = 'text/javascript';
   script.src = js;
   script.addEventListener( "load", onload, false );
   head.appendChild(script);
}

آمل أن يكون هذا قد يساعد شخص ما في المستقبل.

هل هناك طريقة للتأكد من تحميل كلا البرنامجين النصيين قبل أن أستخدمهما؟

نعم.

ضع الكود الذي تريد تحميله أخيرًا (your application.js الاشياء) في النماذج الأولية document.observe.يجب أن يضمن هذا أن الكود لن يتم تحميله إلا بعد انتهاء النموذج الأولي + الأشياء الأخرى وجاهزيتها.(إذا كنت معتادًا على استخدام jQuery، فهذه الوظيفة مشابهة لوظيفة jQuery $(document).ready )

يعتمد AMQ على النموذج الأولي الذي تقول وحدة التحكم في الأخطاء في FireFox أن الكائن لم يتم تعريفه.

هل تقصد أن AMQ يعتمد على مكتبة النماذج الأولية؟لا أستطيع رؤية استيراد لتلك المكتبة في الكود الذي قدمته.

هل تقصد أن AMQ يعتمد على مكتبة النموذج الأولي؟لا يمكنني رؤية استيراد لتلك المكتبة في الرمز الذي قدمته.

نعم بالنسبة لجافا سكريبت الخاص بـ ActiveMQ (amq.js) يعتمد على النموذج الأولي.في amq.js، يتم تحميل 3 نصوص برمجية، _amq.js وbehavior.js وprototype.js.

نشكرك على مساعدتك في أمر تحميل جافا سكريبت wrumsby.هذا يخبرني أن خطأي موجود في قلعة أخرى :(

أعتقد أن لدي مشكلة مختلفة.لقد قمت أيضًا بفحص ملفات js من ActiveMQ 5.0 إلى 5.1 ولاحظت أنها متماثلة أيضًا.لقد تغير شيء ما في الإصدار 5.0 إلى 5.1 مما يتطلب التحديث حتى تتمكن المواضيع من الاشتراك.سأستمر في البحث، ولكن شكرًا لك على إزالة هذا السبب المحتمل.

يمكنك أيضًا استخدام طريقة SharePoint javascript المضمنة للتحكم في تنفيذ البرامج النصية الخاصة بك؛

_spBodyOnLoadFunctionNames.push("yourFunction");
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top