توضیحات
از chrome.contextMenus
API برای افزودن موارد به منوی زمینه Google Chrome استفاده کنید. میتوانید انتخاب کنید که افزودههای منوی زمینهتان برای چه نوع شیهایی مانند تصاویر، پیوندها و صفحات اعمال میشود.
مجوزها
contextMenus
برای استفاده از API باید مجوز "contextMenus"
در مانیفست برنامه افزودنی خود اعلام کنید. همچنین، شما باید یک نماد 16 در 16 پیکسل برای نمایش در کنار آیتم منو خود را مشخص کنید. به عنوان مثال:
{
"name": "My extension",
...
"permissions": [
"contextMenus"
],
"icons": {
"16": "icon-bitty.png",
"48": "icon-small.png",
"128": "icon-large.png"
},
...
}
مفاهیم و کاربرد
آیتمهای منوی زمینه میتوانند در هر سندی (یا قاب درون یک سند)، حتی در مواردی که آدرسهای اینترنتی file:// یا chrome:// دارند، ظاهر شوند. برای کنترل اینکه آیتم های شما می توانند در کدام اسناد ظاهر شوند، هنگام فراخوانی متدهای create()
یا update()
فیلد documentUrlPatterns
را مشخص کنید.
میتوانید هر تعداد که نیاز دارید، آیتمهای منوی زمینه ایجاد کنید، اما اگر بیش از یک مورد از برنامههای افزودنی شما بهطور همزمان قابل مشاهده باشد، Google Chrome بهطور خودکار آنها را در یک منوی والدین جمع میکند.
نمونه ها
برای امتحان این API، نمونه contextMenus API را از مخزن chrome-extension-samples نصب کنید.
انواع
ContextType
زمینههای مختلفی که یک منو میتواند در آنها ظاهر شود. تعیین «همه» معادل ترکیبی از همه زمینهها به جز «راهانداز» است. زمینه «راهانداز» فقط توسط برنامهها پشتیبانی میشود و برای افزودن آیتمهای منو به منوی زمینه استفاده میشود که هنگام کلیک کردن روی نماد برنامه در راهانداز/نوار وظیفه/بارگاه/غیره ظاهر میشود. پلتفرمهای مختلف ممکن است محدودیتهایی در مورد آنچه واقعاً در منوی زمینه راهانداز پشتیبانی میشود، ایجاد کنند.
Enum
"همه" "صفحه" "قاب" "انتخاب" "پیوند" "قابل ویرایش" "تصویر" "ویدئو" "صوتی" "پرتابگر" "عمل_مرورگر" "page_action" "عمل"
CreateProperties
ویژگی های آیتم منوی زمینه جدید.
خواص
- بررسی شد
بولی اختیاری
وضعیت اولیه یک چک باکس یا دکمه رادیویی:
true
برای انتخاب شده،false
برای انتخاب نشده. فقط یک دکمه رادیویی را می توان در یک زمان در یک گروه معین انتخاب کرد. - زمینه ها
[ ContextType , ... ContextType []] اختیاری است
فهرست زمینههایی که این آیتم منو در آنها ظاهر میشود. پیشفرض
['page']
است. - documentUrl Patterns
رشته[] اختیاری است
مورد را محدود می کند تا فقط برای اسناد یا قاب هایی اعمال شود که URL آنها با یکی از الگوهای داده شده مطابقت دارد. برای جزئیات بیشتر در مورد قالبهای الگو، به الگوهای مطابقت مراجعه کنید.
- فعال شد
بولی اختیاری
آیا این آیتم منوی زمینه فعال یا غیرفعال است. پیش فرض ها به
true
- شناسه
رشته اختیاری
شناسه منحصر به فرد برای اختصاص دادن به این مورد. برای صفحات رویداد اجباری است. نمی تواند با شناسه دیگری برای این افزونه یکسان باشد.
- شناسه والدین
رشته | شماره اختیاری
شناسه یک آیتم منوی والدین؛ این باعث می شود که مورد فرزند آیتمی که قبلاً اضافه شده باشد.
- الگوهای targetUrl
رشته[] اختیاری است
مشابه
documentUrlPatterns
، فیلترها بر اساس ویژگیsrc
تگهایimg
،audio
وvideo
و ویژگیhref
a
تگ است. - عنوان
رشته اختیاری
متن برای نمایش در مورد؛ این مورد نیاز است مگر اینکه
type
separator
باشد. هنگامی که زمینهselection
است، از%s
در رشته برای نمایش متن انتخاب شده استفاده کنید. به عنوان مثال، اگر مقدار این پارامتر "Translate '%s' to Pig Latin" باشد و کاربر کلمه "cool" را انتخاب کند، مورد منوی زمینه برای انتخاب "Translate 'cool' to Pig Latin" است. - نوع
ItemType اختیاری است
نوع آیتم منو پیش فرض به
normal
است. - قابل مشاهده است
بولی اختیاری
اینکه آیا مورد در منو قابل مشاهده است یا خیر.
- onclick
باطل اختیاری
تابعی که با کلیک روی آیتم منو دوباره فراخوانی می شود. این در داخل یک کارگر خدماتی در دسترس نیست. در عوض، شما باید یک شنونده برای
contextMenus.onClicked
ثبت کنید.تابع
onclick
به شکل زیر است:(info: OnClickData, tab: Tab) => {...}
- اطلاعات
اطلاعاتی درباره مورد کلیک شده و زمینه ای که کلیک روی آن انجام شده است.
- برگه
جزئیات برگه ای که کلیک روی آن انجام شده است. این پارامتر برای برنامه های پلت فرم وجود ندارد.
ItemType
نوع آیتم منو
Enum
"عادی" "چک باکس" "رادیو" "جداکننده"
OnClickData
هنگامی که روی یک آیتم منوی زمینه کلیک می شود، اطلاعات ارسال می شود.
خواص
- بررسی شد
بولی اختیاری
پرچمی که وضعیت یک چک باکس یا آیتم رادیویی را پس از کلیک روی آن نشان می دهد.
- قابل ویرایش
بولی
پرچمی که نشان می دهد آیا عنصر قابل ویرایش است (ورودی متن، ناحیه متنی و غیره).
- frameId
شماره اختیاری
Chrome 51+شناسه قاب عنصری که روی منوی زمینه کلیک شده است، اگر در یک قاب بود.
- frameUrl
رشته اختیاری
نشانی وب قاب عنصری که روی منوی زمینه کلیک شده است، اگر در یک قاب بود.
- linkUrl
رشته اختیاری
اگر عنصر یک پیوند است، نشانی اینترنتی که به آن اشاره می کند.
- نوع رسانه
رشته اختیاری
یکی از «تصویر»، «ویدئو» یا «صوت» اگر منوی زمینه روی یکی از این نوع عناصر فعال شده باشد.
رشته | شماره
شناسه آیتم منو که روی آن کلیک شده است.
- آدرس صفحه
رشته اختیاری
URL صفحه ای که روی آیتم منو کلیک شده است. اگر کلیک در زمینهای که صفحه فعلی وجود ندارد، مانند منوی زمینه راهانداز، این ویژگی تنظیم نمیشود.
- parentMenuItemId
رشته | شماره اختیاری
شناسه والد، در صورت وجود، برای مورد کلیک شده.
- انتخاب متن
رشته اختیاری
متن برای انتخاب زمینه، در صورت وجود.
- srcUrl
رشته اختیاری
برای عناصر با URL 'src' وجود خواهد داشت.
- بررسی شد
بولی اختیاری
پرچمی که وضعیت یک چک باکس یا آیتم رادیویی را قبل از کلیک روی آن نشان میدهد.
خواص
ACTION_MENU_TOP_LEVEL_LIMIT
حداکثر تعداد موارد برنامه افزودنی سطح بالا که می توان به منوی زمینه اقدام برنامه افزودنی اضافه کرد. هر موردی که بیش از این حد باشد نادیده گرفته خواهد شد.
ارزش
6
روش ها
create()
chrome.contextMenus.create(
createProperties: CreateProperties,
callback?: function,
)
یک آیتم منوی زمینه جدید ایجاد می کند. اگر خطایی در حین ایجاد رخ دهد، ممکن است تا زمانی که پاسخ تماس ایجاد نشود، آن را شناسایی نکند. جزئیات در runtime.lastError
خواهد بود.
پارامترها
- createProperties
- پاسخ به تماس
عملکرد اختیاری
پارامتر
callback
به نظر می رسد:() => void
برمی گرداند
شماره | رشته
شناسه مورد جدید ایجاد شده.
remove()
chrome.contextMenus.remove(
menuItemId: string | number,
callback?: function,
)
یک مورد منوی زمینه را حذف می کند.
پارامترها
رشته | شماره
شناسه مورد منوی زمینه برای حذف.
- پاسخ به تماس
عملکرد اختیاری
پارامتر
callback
به نظر می رسد:() => void
برمی گرداند
قول<باطل>
Chrome 123+Promises در Manifest V3 و نسخه های جدیدتر پشتیبانی می شود، اما callbacks برای سازگاری به عقب ارائه شده است. شما نمی توانید از هر دو در یک فراخوانی تابع استفاده کنید. وعده با همان نوعی که به callback ارسال می شود حل می شود.
removeAll()
chrome.contextMenus.removeAll(
callback?: function,
)
تمام موارد منوی زمینه اضافه شده توسط این برنامه افزودنی را حذف می کند.
پارامترها
- پاسخ به تماس
عملکرد اختیاری
پارامتر
callback
به نظر می رسد:() => void
برمی گرداند
قول<باطل>
Chrome 123+Promises در Manifest V3 و نسخه های جدیدتر پشتیبانی می شود، اما callbacks برای سازگاری به عقب ارائه شده است. شما نمی توانید از هر دو در یک فراخوانی تابع استفاده کنید. وعده با همان نوعی که به callback ارسال می شود حل می شود.
update()
chrome.contextMenus.update(
id: string | number,
updateProperties: object,
callback?: function,
)
آیتم منوی زمینه ایجاد شده قبلی را به روز می کند.
پارامترها
- شناسه
رشته | شماره
شناسه مورد برای به روز رسانی.
- updateProperties
شی
خواص برای به روز رسانی مقادیر مشابه تابع
contextMenus.create
را می پذیرد.- بررسی شد
بولی اختیاری
- زمینه ها
[ ContextType , ... ContextType []] اختیاری است
- documentUrl Patterns
رشته[] اختیاری است
- فعال شد
بولی اختیاری
- شناسه والدین
رشته | شماره اختیاری
شناسه موردی که قرار است به عنوان والد این مورد تبدیل شود. توجه: شما نمی توانید یک مورد را طوری تنظیم کنید که فرزندی از نسل خودش باشد.
- الگوهای targetUrl
رشته[] اختیاری است
- عنوان
رشته اختیاری
- نوع
ItemType اختیاری است
- قابل مشاهده است
بولی اختیاری
Chrome 62+اینکه آیا مورد در منو قابل مشاهده است یا خیر.
- onclick
باطل اختیاری
تابع
onclick
به شکل زیر است:(info: OnClickData, tab: Tab) => {...}
- اطلاعاتChrome 44+
- برگهChrome 44+
جزئیات برگه ای که کلیک روی آن انجام شده است. این پارامتر برای برنامه های پلت فرم وجود ندارد.
- پاسخ به تماس
عملکرد اختیاری
پارامتر
callback
به نظر می رسد:() => void
برمی گرداند
قول<باطل>
Chrome 123+Promises در Manifest V3 و نسخه های جدیدتر پشتیبانی می شود، اما callbacks برای سازگاری به عقب ارائه شده است. شما نمی توانید از هر دو در یک فراخوانی تابع استفاده کنید. وعده با همان نوعی که به callback ارسال می شود حل می شود.
رویدادها
onClicked
chrome.contextMenus.onClicked.addListener(
callback: function,
)
با کلیک روی یک مورد منوی زمینه فعال می شود.
پارامترها
- پاسخ به تماس
تابع
پارامتر
callback
به نظر می رسد:(info: OnClickData, tab?: tabs.Tab) => void
- اطلاعات
- برگه
Tabs.Tab اختیاری است