جافا سكريبت - Respond.js لا يعمل عبر النطاقات
أواجه صعوبة في جعل إعداد CDN/X-Domain الخاص بـ Respond يعمل.
بدأت بتقديم جميع الأصول من شبكة توصيل المحتوى (CDN):
<link rel="stylesheet" href="http://cdn.example.com/css/main.css?2013012401">
<script src="http://cdn.example.com/js/modernizr-2.6.2.min.js?2013012401"></script>
<script src="http://cdn.example.com/js/respond.min.js?2013012401"></script>
من الناحية النظرية، يجب أن يعمل هذا، حيث يتم تقديم جميع الأصول من نفس النطاق. ومع ذلك، لم يتلق IE8 دعم استعلامات الوسائط كما ينبغي. لذلك قمت بالتحقيق في إعداد CDN/X-Domain الخاص بـ Respond وعدلت قسم <head> الخاص بي إلى هذا:
<link rel="stylesheet" href="http://cdn.example.com/css/main.css?2013012401">
<script src="http://cdn.example.com/js/modernizr-2.6.2.min.js?2013012401"></script>
<script src="http://cdn.example.com/js/respond.min.js?2013012401"></script>
<link href="http://cdn.example.com/respond-proxy.html?2013012401" id="respond-proxy" rel="respond-proxy">
<link href="http://cdn.example.com/img/respond.proxy.gif?2013012401" id="respond-redirect" rel="respond-redirect">
<script src="http://cdn.example.com/js/respond.proxy.js?2013012401"></script>
عندما فشل ذلك أيضًا، قمت بتعديل قسم <head> الخاص بي إلى هذا:
<link rel="stylesheet" href="http://cdn.example.com/css/main.css?2013012401">
<script src="http://cdn.example.com/js/modernizr-2.6.2.min.js?2013012401"></script>
<script src="http://cdn.example.com/js/respond.min.js?2013012401"></script>
<link href="http://cdn.example.com/respond-proxy.html?2013012401" id="respond-proxy" rel="respond-proxy">
<link href="/img/respond.proxy.gif" id="respond-redirect" rel="respond-redirect">
<script src="/js/respond.proxy.js"></script>
لست متأكدًا مما يمكنني تجربته فعليًا لجعل هذا يعمل. إنه يعمل بشكل جيد في بيئة تطوير محلية لا تستخدم شبكة توصيل المحتوى (CDN)، لكن في البيئة الحية، إعداد Respond.js CDN/X-Domain هذا لا يعمل. هل من الممكن أن يكون مرتبطًا بسلسلة استعلام كسر التخزين المؤقت المضافة إلى أصول CDN؟ لماذا المثال الأصلي لدي لا يعمل عندما يتم تقديم جميع الأصول من نفس النطاق؟
تعديل: إليك الخطأ الذي يظهر في IE8
الإجابة رقم 1
تم التسبب في هذه المشكلة بواسطة مرجع ملف respond-proxy.html الذي يحتوي على سلسلة استعلام (respond-proxy.html?2013012401). إزالة سلسلة الاستعلام من هذا الملف يؤدي إلى عمل التنفيذ أعلاه.