أين تذهب عملية النسخ?
ترى الصفحة طريقة تسمى 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، مع أسماء المتغيرات القابلة للقراءة. تم حذف الأعضاء غير المرتبطين.
-
ابدأ من واجهة برمجة التطبيقات المكشوفة للصفحة
علامة التبويب_المتصفح_عرض/preload.js * عضو واجهة برمجة التطبيقاتconst clipboardApi = { write: invokerInMain("notion:clipboard:write") }; // Included in the API exposed through contextBridge: // window.__electronApi.clipboardيوفر هذا العضو اسم القناة. تنفيذ
invokerInMainيخبرنا كيف يترك الطلب عملية الصفحة. -
حل غلاف التحميل المسبق
علامة التبويب_المتصفح_عرض/preload.js * إيبك مساعدfunction invokerInMain(channel) { return (...args) => invokeInMainAndReturnResult(channel, ...args); } function invokeInMainAndReturnResult(channel, ...args) { return ipcRenderer.invoke(channel, ...args); }تقوم الدالة التي تم إرجاعها بإعادة توجيه الوسيطات من خلال Electronطلب واستجابة التصنيف الدولي للبراءات. يمكننا الآن البحث عن
notion:clipboard:writeعلى الجانب الرئيسي-العملية. -
تحقق من كيفية تسجيل المتلقي
الرئيسية/index.js * معالج مساعدconst handleRequestFromRenderer = { addListener(channel, handler) { ipcMain.handle(channel, handler); } };تستخدم العملية الرئيسية غلاف آخر. لها
addListenerالطريقة تسجلipcMain.handleاستقبال لتلك القناة. -
ابحث عن الكتابة والتحقق من المرسل
الرئيسية/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> -->"
id: <copy-id>
mimeTypes:
text/_notion-blocks-v3-production
→ structured block data
- قراءة معرف هتمل
- ابحث عن نفس المعرف المحلي
- استعادة 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. تظهر اختبارات الوحدة النمطية المحفوظة أن عوامل تصفية الصفحة والدردشة تحافظ على هذا الجدول. يحتوي محللو اللصق / الاستيراد والتخفيض المنظم والذكاء الاصطناعي / الدردشة على نقاط دخول منفصلة وتنسيقات وسيطة.
- JavaScript دليل التطبيقاتبع صغيرة Electron ميزة تصدير التطبيق.
- DX-Ball إعادة الإعماراتبع التعليمات الأصلية إلى دالة C محددة.