"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكنني تمرير المعلمات إلى البرامج النصية للمحتوى المحقونة بـ "chrome.tabs.executeScript()"؟

كيف يمكنني تمرير المعلمات إلى البرامج النصية للمحتوى المحقونة بـ "chrome.tabs.executeScript()"؟

تم النشر بتاريخ 2024-11-07
تصفح:733

How Do I Pass Parameters to Content Scripts Injected with `chrome.tabs.executeScript()`?

تمرير المعلمات إلى نصوص المحتوى المحقونة باستخدام chrome.tabs.executeScript()

عند إدخال ملف نصي محتوى باستخدام chrome.tabs.executeScript ({ملف: "content.js"})، يظهر سؤال شائع: كيفية تمرير المعلمات إلى JavaScript داخل البرنامج النصي للمحتوى file?

مغالطة تمرير المعلمات

من المهم توضيح أنه لا يمكنك تمرير المعلمات مباشرة إلى ملف. بدلاً من ذلك، لديك خياران لتحقيق هذه الوظيفة:

1. تعيين المعلمات قبل تنفيذ الملف

يستدعي Nest chrome.tabs.executeScript لتحديد المتغيرات قبل حقن الملف:

chrome.tabs.executeScript(tab.id, {
    code: 'var config = 1;'
}, function() {
    chrome.tabs.executeScript(tab.id, {file: 'content.js'});
});

بالنسبة للمتغيرات المعقدة، فكر في استخدام JSON.stringify لتحويل كائن إلى سلسلة:

var config = {somebigobject: 'complicated value'};
chrome.tabs.executeScript(tab.id, {
    code: 'var config = '   JSON.stringify(config)
}, function() {
    chrome.tabs.executeScript(tab.id, {file: 'content.js'});
});

في content.js، يمكنك الوصول إلى هذه المتغيرات:

// content.js
alert('Example:'   config);

2. تعيين المعلمات بعد تنفيذ الملف

قم بتنفيذ الملف أولاً، ثم استخدم واجهة برمجة التطبيقات لتمرير الرسالة لإرسال المعلمات:

chrome.tabs.executeScript(tab.id, {file: 'content.js'}, function() {
    chrome.tabs.sendMessage(tab.id, 'whatever value; String, object, whatever');
});

في content.js، استمع لهذه الرسائل باستخدام chrome.runtime.onMessage وتعامل مع الرسالة:

chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) {
    // Handle message.
    // In this example, message === 'whatever value; String, object, whatever'
});
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3