سؤال

هل من الممكن العثور على مثيلات أجنبية لموقع معين؟ OFC theese يتم فتح علامات التبويب بشكل مستقل (وليس بواسطة window.Open). أحتاج إلى منع المستخدم من فتح علامات تبويب 2 ، وإرسال رسالة إلى علامة التبويب التي تم فتحها مسبقًا لإبلاغ أنه من المستحيل فتح علامتين. 2 علامات التبويب المعتمدة قد تحطم الصفحة تخزينًا متصلًا للإنترنت وهيكل WebSQL ، بحيث لا يمكنني السماح للأشخاص باستخدام علامات تبويب 2. إنه أيضًا تطبيق شبه خط ، لذلك يجب أن يكون حلًا من جانب العميل.

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

المحلول

يمكنك التواصل عبر علامات التبويب باستخدام LocalStorage. في كل مرة تكتب فيها قيمة ، يتم إطلاق حدث "تخزين" على كائن النافذة في كل علامة تبويب (باستثناء علامة التبويب الحالية).

http://diveintohtml5.info/storage.html

قم بالتمرير لأسفل إلى "تتبع التغييرات في منطقة تخزين HTML5"

سيشمل الحدث event.key, event.newValue, event.oldValue.

هذا يعمل فقط في المتصفحات الحديثة.

نصائح أخرى

في عام 2021 ، يمكنك استخدام عامل الخدمة:

https://github.com/gyteng/service-work-event

إشعار: يعمل عامل الخدمة فقط في https بروتوكول

يمكن استخدام LocalStorage لتتبع Windows. يجب أن تأخذ في الاعتبار الموقف عند تعطل النافذة - سيترك القمامة في LocalStorage. قد يتم الوصول إلى مورد مشترك من العديد من النوافذ في وقت واحد بواسطة Mutex استنادًا إلى LocalStorage.

لقد نشرت مؤخرًا مكتبة الاتصالات المتداخلة (يتم وصف جميع الميزات في ReadMe). يوفر مشاركة البيانات الآمنة في مؤشرات الترابط ، وأقفال النافذة المتقاطعة وبث الأحداث. كما أنه يحل بعض المشكلات.

قناة البث هي تصميم لهذاhttps://developer.mozilla.org/en-us/docs/web/api/broadcast_channel_api

لكن واجهة برمجة التطبيقات الأصلية تدعم المتصفحات الحديثة فقط. هناك حزمة NPM تدعم جميع المتصفحات القديمة أيضًاhttps://www.npmjs.com/package/broadcast-channel

ليس لديك سيطرة على ذلك. يمكن للمستخدم أن يفعل بشكل أساسي كل ما يريده على الكمبيوتر.

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