سؤال

لنفترض أن لدينا تطبيق Mozilla Prism مثل تطبيق XULRunner.توجد نافذة XUL تحتوي على عنصر <browser/>، حيث يعرض المتصفح صفحة ويب في مجال معين (على سبيل المثال، example.com).

يوجد الآن العديد من الروابط على example.com.إذا اتبع المستخدم رابطًا محليًا (أي بقي على example.com)، فيجب السماح له بالمتابعة.ومن ناحية أخرى، إذا انتقل الرابط إلى elpmaxe.moc، فيجب أن يكون هناك (لا أمانع) أيًا من هذين الاحتمالين:

  • يتم فتح المتصفح "الحقيقي" (تمامًا كما هو الحال في Prism)، أو
  • لا شيء يحدث.

أي أفكار حول كيفية القيام بذلك؟لا يكفي استخدام browser.document.onload أو DOMready أو مثل هذه الأحداث، لأنه يجب حظر الرابط بأمان حتى أثناء تحميل الصفحة (أي عندما لا يتم تشغيل أي من هذه الأحداث بعد).

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

المحلول

يبدو أنك تريد وظائف مشابهة لتلك التي يوفرها BlockSite - إلا أنك تريد إضافة نطاق التطبيق إلى القائمة البيضاء وحظر كل شيء آخر.هناك بعض وثائق MDC تثبيت الامتدادات داخل XUL Runner والتي قد تساعد.

وبدلاً من ذلك، يمكنك إلقاء نظرة على الكود المصدري ومحاولة معرفة مكان ربطه - وهذا سيتيح لك تنفيذ سلوك بديل لمجرد حظر وتجنب شحن ملحق مع تطبيقك.أظن BlockSite.js هو ملف المفتاح، ويبدو أنه تمت إضافة المعالج هنا (السطر 171):

var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
observerService.addObserver(BlockSiteObserver, "http-on-modify-request", false);

ال BlockSiteObserver يتم تعريف الوظيفة في الكود أعلاه مباشرة.

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