خطوط جوجل لا تعمل في الصين - كيفية اصلاحها
السبب في أننا نستخدم Google API لخدمة المكتبات مثل jQuery و Web Fonts هو أنه يخدم بسرعة من خلال البنية التحتية الموثوقة لـ Google. يتم استخدامه في كل مكان تقريبًا ، لدرجة أن بعض المستخدمين قد يكون لديهم بالفعل ذاكرة التخزين المؤقت المخزنة في المستعرض الخاص بهم ، مما يجعل تحميل المكتبات حتى في بسرعة.
لسوء الحظ ، ليس هذا هو الحال في الصين. أغلقت حكومة الصين الوصول إلى العديد من خدمات Google بما في ذلك Google API في عام 2014. من المحتمل أن موقع الويب الخاص بك قد يبدو مكسورة جزئيا في الصين لأنه يتعذر الوصول إلى jQuery وخطوط الويب المستضافة في Google.
في هذا المنشور ، سنرى كيفية تخطي سور الصين العظيم "الرقمي" ، بحيث يمكن لموقعنا أن يعمل مثل طريقة مشاهدته خارج الصين. سنستخدم مكتبة خطوط بديلة تعكس خطوط Google والمكتبات ، ولكن أولاً سنحتاج إلى وضع بعض التدابير لتحديد المستخدمين الذين ينتمون إلى الصين.
تحديد موقع المستخدم
بادئ ذي بدء ، سنحتاج إلى العثور على المكان الذي ينتمي إليه زائرنا والقيام بذلك ، وسنستخدم واجهة برمجة تطبيقات WIPMania التي تتيح استرداد الموقع الجغرافي للزائر ، بما في ذلك اسم بلده:
$ .getJSON ('http://api.wipmania.com/jsonp؟callback=؟'، function (data) swal ('أنت من'، data.address.country)؛)؛
نحن نستخدم مسج $ .getJSON
للاتصال API. ثم نمر data.address.country
التي يجب أن تخبرنا من أين الزائر من. هنا هو تجريبي.
توفير مصدر الخط البديل على شبكة الإنترنت
والآن وبعد أن أصبح بمقدورنا استعادة موقع الزائر الخاص بنا ، سنستبدل Google Fonts بمكتبات Useso ، وهي خدمة CDN تعكس الخطوط والمكتبات من Google API ، لخدمة الزوار من الصين.
في هذه المرحلة ، لا يزال لدينا أنماط الخطوط لدينا تشير إلى Google API:
سنستبدل أ href
في حدود حلقة الوصل
عنصر مع وظيفة جافا سكريبت.
function replaceGoogleCDN () $ ('link'). each (function () var $ intial = $ (this) .attr ('href') ، $ replace = $ intial.replace ('// fonts.googleapis.com / '،' //fonts.useso.com/ ')؛ $ (this) .attr (' href '، $ replace)؛)؛
تحل هذه الوظيفة محل كل رابط للإشارة إليه //fonts.useso.com/
بدلاً من الإشارة إلى عنوان Google API, //fonts.googleapis.com/
.
سيتم تشغيل الوظيفة فقط عندما يكون الزائر من CN
, رمز البلد الدولي في الصين.
$ .getJSON ('http://api.wipmania.com/jsonp؟callback=؟'، function (data) if (data.address.country_code == 'CN') replaceGoogleCDN ()؛)؛
نحن متهيئون. الآن ، سيتم تقديم زوار الخطوط الصينية عبر //fonts.useso.com/
وهو ما لا تحظره الحكومة الصينية.