دراسة حالة · Electron

كيف Notion نسخ
النص و هتمل.

تتبع استدعاء دالة الحافظة من Notionواجهة برمجة تطبيقات الصفحة ، من خلال التحميل المسبق والعملية الرئيسية ، إلى Electronكاتب الحافظة.

Notion سطح المكتب 7.6.1 · JavaScript · REA

الجسر في الداخل Notionحزمة سطح المكتب

  1. 01 * واجهة برمجة تطبيقات مواجهة للصفحة clipboard.write(data) يعرض التحميل المسبق طريقة قابلة للاستدعاء.
  2. 02 * غلاف التحميل المسبق ipcRenderer.invoke المجمع يرسل القناة والحجج.
  3. 03 * معالج العملية الرئيسية ipcMain.handle يتحقق المتلقي من الصفحة التي أرسلتها.
  4. 04 * حافظة النظام clipboard.write(data) Electron يكتب النص المرفق و هتمل.

قناة واحدة تنضم إلى الجانبين: notion:clipboard:write

يستخدم الرمز المعبأ نفس القناة في التحميل المسبق والعملية الرئيسية. حل مغلفة يكشف عن Electron يدعو وراء تلك الأسماء.

أين تذهب عملية النسخ?

ترى الصفحة طريقة تسمى clipboard.write. تنفيذه في التحميل المسبق هو المجمع. السؤال المفيد هو ما يرسله هذا الغلاف ، وأي رمز يستقبله.

مساعدك البرمجي

استخدام REA لتتبع كيف Notion نسخ النص و هتمل إلى حافظة النظام. أظهر الرمز في كل خطوة.

مثال موجه مع Notionحزمة التطبيق المحلية المتاحة لمساعدك البرمجي.

REA يجد من أين تبدأ القراءة

تحليل علامة التبويب التحميل المسبق مع REA يقع أبي يتعرض إلى الصفحة والاستدعاء دالة التي ترسل طلب إيبك. تأتي كلتا النتيجتين مع نطاقات المصدر في الحزمة المصغرة:

REA النتائج places مكانين لفتح

واجهة برمجة تطبيقات الصفحة المكشوفة
api_key: "__electronApi"
api_status: "dynamic"
source: preload.js:1:22764–22828
دعوة العارض إيبك
operation: "invoke"
channel_expression: "e"
source: preload.js:1:6486–6522
الحقول المختارة من جديد analyze_javascript_application النتيجة على Notionعلامة التبويب التحميل المسبق ، المسجلة مع REA 4.1.0. تستخدم المواضع خط الحزمة الأصلي والعمود الصفري.

يفتح الوكيل هذه المواقع ، ويجد عضو الحافظة في واجهة برمجة التطبيقات المجمعة ، ويقرأ invokerInMain. لوازم موقع الاتصال notion:clipboard:write. يعطي هذا الاسم الوكيل شيئا دقيقا للبحث عنه في الحزمة الرئيسية. تظهر المقتطفات الأربعة أدناه المسار الذي يربط.

أربع قطع قصيرة من التعليمات البرمجية

مبسطة من تعبئتها JavaScript، مع أسماء المتغيرات القابلة للقراءة. تم حذف الأعضاء غير المرتبطين.

  1. ابدأ من واجهة برمجة التطبيقات المكشوفة للصفحة

    علامة التبويب_المتصفح_عرض/preload.js * عضو واجهة برمجة التطبيقات
    const clipboardApi = {
      write: invokerInMain("notion:clipboard:write")
    };
    
    // Included in the API exposed through contextBridge:
    // window.__electronApi.clipboard

    يوفر هذا العضو اسم القناة. تنفيذ invokerInMain يخبرنا كيف يترك الطلب عملية الصفحة.

  2. حل غلاف التحميل المسبق

    علامة التبويب_المتصفح_عرض/preload.js * إيبك مساعد
    function invokerInMain(channel) {
      return (...args) => invokeInMainAndReturnResult(channel, ...args);
    }
    
    function invokeInMainAndReturnResult(channel, ...args) {
      return ipcRenderer.invoke(channel, ...args);
    }

    تقوم الدالة التي تم إرجاعها بإعادة توجيه الوسيطات من خلال Electronطلب واستجابة التصنيف الدولي للبراءات. يمكننا الآن البحث عن notion:clipboard:write على الجانب الرئيسي-العملية.

  3. تحقق من كيفية تسجيل المتلقي

    الرئيسية/index.js * معالج مساعد
    const handleRequestFromRenderer = {
      addListener(channel, handler) {
        ipcMain.handle(channel, handler);
      }
    };

    تستخدم العملية الرئيسية غلاف آخر. لها addListener الطريقة تسجل ipcMain.handle استقبال لتلك القناة.

  4. ابحث عن الكتابة والتحقق من المرسل

    الرئيسية/index.js * استقبال الحافظة
    handleRequestFromRenderer.addListener(
      "notion:clipboard:write",
      (event, data) =>
        isNotionWebContents(event.sender)
          ? clipboard.write(data)
          : undefined
    );

    هذه هي الوجهة. بعد التحقق من المرسل ، يقوم المعالج بتمرير البيانات المقدمة إلى Electronواجهة برمجة تطبيقات الحافظة. تقوم القناة والأغلفة التي تم حلها بتوصيل الطريقة المكشوفة بهذه الاستدعاء دالة.

كيف تحافظ الكتلة المنسوخة على هيكلها?

Notionمحرر الويب يرسل النص و هتمل من خلال electronApi.clipboard.write. فإنه يحتفظ البيانات كتلة محليا ويضع معرف في هتمل نسخها لربطها.

وصلات أتش تي أم أل إلى بيانات الكتلة المحفوظة

إرسالها إلى حافظة النظام
text: "Project notes"
html: "<p>Project notes</p>"
    + "<!-- notionvc: <copy-id> -->"
محفوظ محليا بواسطة Notion
id: <copy-id>
mimeTypes:
  text/_notion-blocks-v3-production
    → structured block data
  1. قراءة معرف هتمل
  2. ابحث عن نفس المعرف المحلي
  3. استعادة Notion كتلة البيانات
نص توضيحي ومعرف. يستعيد اختبار الوحدة النمطية المسجلة بيانات الكتلة عند تطابق المعرفات ؛ يقوم إدخال قديم بإرجاع النص والأتش تي أم أل فقط.

على لصق, Notion يبحث عن معرف هتمل ويتحقق من ذلك ضد النسخة المحفوظة. معرفات مطابقة استعادة البيانات كتلة.

تم تسجيل تنسيق الحافظة من أصول الويب المخزنة مؤقتا في 13 يوليو 2026.

المزيد من الأمثلة والمصادر

مثال آخر: جداول تخفيض السعر

Notion يوزع تخفيض السعر في بيانات الكتلة. يوضح هذا المثال كيف يصبح الجدول رأس وصفوف البيانات.

جدول من خلال Notionمحلل تخفيض السعر

إدخال تخفيض السعر
| A | B |
| - | - |
| 1 | 2 |
منظم محلل الإخراج * مقتطفات
table · headerRow: true
  table_row
    cells: ["A"], ["B"]
  table_row
    cells: ["1"], ["2"]
الإخراج المسجل من محلل تخفيض السعر المستخرج. يصبح الجدول الصفوف والخلايا.
مسار آخر: اتصال سكليتي غير متصل

Notionطلبات العارض getSqliteMeta من خلال التصنيف الدولي للبراءات. العملية الرئيسية بإنشاء قناة رسالة ويعطي منفذ واحد إلى العارض والآخر إلى عملية فائدة سكليتي. دفعات البيان اللاحقة والنتائج تنتقل عبر هذا المنفذ.

بعد هذا التحول يشرح أين يعمل عمل قاعدة البيانات ، ولماذا تتبع فقط طلب إيبك الأولي يفتقد المحادثة في وقت لاحق.

المصادر وكيفية قراءة المقتطفات

جسر الحافظة يأتي من Notion سطح المكتب 7.6.1 app.asar: علامة التبويب التحميل المسبق و main/index.js. تعمل المقتطفات على توسيع أسماء المتغيرات المصغرة وحذف التعليمات البرمجية غير ذات الصلة ؛ يظهر مساعد التحقق من المرسل مع أساسه isNotionWebContents اتصل.

تأتي أمثلة الحافظة الافتراضية والتخفيض من أصول الويب المخزنة مؤقتا في 13 يوليو 2026 ، بما في ذلك الوحدات النمطية 747001, 58169, 736810 و 422457. هذه الأصول لها نسختها الخاصة. نفذت المجسات المحفوظة وحدات مستخرجة وأحزمة صغيرة ؛ تصف مخرجاتها تلك المجسات بدلا من جلسة واجهة مستخدم سطح المكتب الملتقطة.

ال REA النتيجة الموضحة هنا هي تحليل مركز للتحميل المسبق لعلامة التبويب المحفوظة ، والمسجلة مع المنشور REA 4.1.0 حزمة. فإنه يقع أبي واستدعاء العملية. يتم توصيل عضو الحافظة وجهاز الاستقبال المطابق من خلال قراءة تطبيقات الغلاف الخاصة بهم في الحزمة.

يستخدم مثال تخفيض السعر وحدة المحلل اللغوي 422457. تظهر اختبارات الوحدة النمطية المحفوظة أن عوامل تصفية الصفحة والدردشة تحافظ على هذا الجدول. يحتوي محللو اللصق / الاستيراد والتخفيض المنظم والذكاء الاصطناعي / الدردشة على نقاط دخول منفصلة وتنسيقات وسيطة.

أعلى