refresh date: 2026-09-25 robots: noindex
شرح
از chrome.devtools.inspectedWindow API برای تعامل با پنجره بازرسیشده استفاده کنید: شناسه برگه را برای صفحه بازرسیشده دریافت کنید، کد را در زمینه پنجره بازرسیشده ارزیابی کنید، صفحه را مجدداً بار کنید، یا فهرست منابع درون صفحه را دریافت کنید.
مانیفست
برای استفاده از این میانای برنامهسازی کاربردی، کلیدهای زیر باید در مانیفست اعلام شوند.
"devtools_page"از chrome.devtools.inspectedWindow برای تعامل با پنجره بازرسیشده استفاده کنید: شناسه برگه را برای
صفحه بازرسیشده دریافت کنید، کد را در زمینه پنجره بازرسیشده ارزیابی کنید، صفحه را مجدداً بار کنید، یا
فهرست منابع درون صفحه را دریافت کنید.
برای آشنایی کلی با نحوه استفاده از میاناهای برنامهسازی کاربردی «ابزارهای توسعهدهندگان»، به خلاصه میاناهای برنامهسازی کاربردی DevTools مراجعه کنید.
نمای کلی
مشخصه tabId شناسه برگهای را ارائه میدهد که میتوانید با فراخوانیهای میانای برنامهسازی کاربردی chrome.tabs.* از آن استفاده کنید. بااینحال، لطفاً توجه داشته باشید که بهدلیل ملاحظات امنیتی، chrome.tabs.* API در صفحههای افزونه «ابزارهای توسعهدهندگان» نمایش داده نمیشود—باید شناسه برگه را به صفحه پسزمینه ارسال کنید و توابع chrome.tabs.* API را از آنجا فراخوانی کنید.
ممکن است از روش reload برای بار کردن مجدد صفحه بازرسیشده استفاده شود. علاوهبراین، تماسگیرنده میتواند
یک لغو برای رشته نماینده کاربر، یک اسکریپت که در اوایل بارگیری صفحه تزریق میشود، یا یک
گزینه برای اجبار به بارگیری مجدد منابع ذخیرهشده در حافظه پنهان را مشخص کند.
از فراخوانی getResources و رویداد onResourceContent برای دریافت فهرست منابع
(اسناد، برگههای سبک نگارش، اسکریپتها، تصاویر، و غیره) در صفحه بازرسیشده استفاده کنید. روشهای getContent و setContent کلاس Resource بههمراه رویداد onResourceContentCommitted ممکن است برای پشتیبانی از اصلاح محتوای منبع، برای مثال توسط ویرایشگر خارجی، استفاده شود.
اجرای کد در پنجره بازرسیشده
روش eval به افزونهها امکان میدهد کد جاوا اسکریپت را در بافت صفحه بازرسیشده اجرا کنند. این روش اگر در بافت مناسب استفاده شود قدرتمند است و اگر بهطور نامناسب استفاده شود خطرناک است. از روش tabs.executeScript استفاده کنید، مگراینکه به عملکرد خاصی نیاز داشته باشید
که روش eval ارائه میدهد.
تفاوتهای اصلی بین روشهای eval و tabs.executeScript در اینجا آمده است:
- روش
evalاز دنیای ایزولهشده برای کد درحال ارزیابی استفاده نمیکند، بنابراین وضعیت جاوا اسکریپت پنجره بازرسیشده برای کد قابلدسترسی است. وقتی دسترسی به وضعیت جاوا اسکریپت صفحه بازرسیشده لازم است، از این روش استفاده کنید. - زمینه اجرای کدی که ارزیابی میشود شامل میانای برنامهسازی کاربردی کنسول «ابزارهای توسعهدهندگان» است.
برای مثال، کد میتواند از
inspectو$0استفاده کند. - کد ارزیابیشده ممکن است مقداری را برگرداند که به فراخوانی برگشتی افزونه ارسال میشود. مقدار برگرداندهشده باید شیء JSON معتبر باشد (فقط میتواند شامل انواع جاوا اسکریپت اولیه و ارجاعهای غیرچرخهای به اشیاء JSON دیگر باشد). لطفاً هنگام پردازش دادههای دریافتی از صفحه بازرسیشده، بسیار مراقب باشید—زمینه اجرا اساساً توسط صفحه بازرسیشده کنترل میشود؛ صفحه مخرب ممکن است بر دادههایی که به افزونه برگردانده میشود تأثیر بگذارد.
توجه داشته باشید که یک صفحه میتواند شامل چندین زمینه اجرای جاوا اسکریپت مختلف باشد. هر قاب بافت خودش را دارد، بهعلاوه یک بافت اضافی برای هر افزونهای که دستورگان محتوا در آن قاب اجرا میکند.
بهطور پیشفرض، روش eval در بافت قاب اصلی صفحه بازرسیشده اجرا میشود.
روش eval یک آرگومان دوم اختیاری میگیرد که میتوانید از آن برای مشخص کردن زمینهای که کد در آن ارزیابی میشود استفاده کنید. این شیء options میتواند شامل یک یا چند کلید زیر باشد:
frameURL- برای مشخص کردن قابی غیراز قاب اصلی صفحه بازرسیشده استفاده کنید.
contextSecurityOrigin- از این گزینه برای انتخاب زمینهای در قاب مشخصشده براساس مبدأ وب آن استفاده کنید.
useContentScriptContext- اگر درست باشد، دستورگان را در همان بافتار دستورگانهای محتوای افزونه اجرا میکند. (معادل با مشخص کردن مبدأ وب خود افزونه بهعنوان مبدأ امنیتی بافت.) از این مورد میتوان برای تبادل داده با متن محتوا استفاده کرد.
مثالها
کد زیر نسخه jQuery مورداستفاده صفحه بازرسیشده را بررسی میکند:
chrome.devtools.inspectedWindow.eval(
"jQuery.fn.jquery",
function(result, isException) {
if (isException) {
console.log("the page is not using jQuery");
} else {
console.log("The page is using jQuery v" + result);
}
}
);
برای امتحان کردن این میانای برنامهسازی کاربردی، نمونههای میانای برنامهسازی کاربردی devtools را از مخزن chrome-extension-samples نصب کنید.
انواع
Resource
منبعی در صفحه بازرسیشده، مثل سند، اسکریپت، یا تصویر.
مشخصات
-
نشانی وب
رشته
نشانی وب منبع.
-
getContent
باطل کردن
قولمحتوای منبع را دریافت میکند.
تابع
getContentبهصورت زیر است:(callback?: function) => {...}
-
تماس برگشتی
تابع اختیاری
پارامتر
callbackبهصورت زیر است:(response: object) => void
-
پاسخ
شیء
Chrome نسخه ۱۵۱ و بالاترشیئی که حاوی محتوای منبع و کدگذاری آن است.
-
محتوا
رشته
محتوای منبع (احتمالاً کدبندیشده).
-
کدبندی
رشته
اگر محتوا کدگذاری نشده باشد، خالی است، درغیراینصورت نام کدگذاری است. درحالحاضر، فقط base64 پشتیبانی میشود.
-
-
-
returns
Promise<object>
Chrome نسخه ۱۵۱ و بالاترتابعی که محتوای منبع را پساز تکمیل درخواست دریافت میکند.
Promises فقط برای «مانیفست نسخه ۳» و نسخههای جدیدتر پشتیبانی میشود، پلاتفرمهای دیگر باید از callbacks استفاده کنند.
-
-
setContent
باطل کردن
قولمحتوای منبع را تنظیم میکند.
تابع
setContentبهصورت زیر است:(content: string, commit: boolean, callback?: function) => {...}
-
محتوا
رشته
محتوای جدید منبع. درحالحاضر فقط منابعی که نوع نوشتار دارند پشتیبانی میشوند.
-
انجام دادن
بولی
اگر کاربر ویرایش منبع را تمام کرده باشد و محتوای جدید منبع باید حفظ شود، مقدار True است؛ اگر این تغییر جزئی باشد و درحین ویرایش منبع توسط کاربر ارسال شده باشد، مقدار False است.
-
تماس برگشتی
تابع اختیاری
پارامتر
callbackبهصورت زیر است:(error?: object) => void
-
خطا
شیء اختیاری
اگر محتوای منبع با موفقیت تنظیم شده باشد، روی تعریفنشده تنظیم میشود؛ درغیراینصورت، خطا را شرح میدهد.
-
-
returns
Promise<object>
Chrome نسخه ۱۵۱ و بالاترتابعی که پساز تکمیل درخواست فراخوانی میشود.
Promises فقط برای «مانیفست نسخه ۳» و نسخههای جدیدتر پشتیبانی میشود، پلاتفرمهای دیگر باید از callbacks استفاده کنند.
-
مشخصات
tabId
شناسه برگهای که دردست بازرسی است. این شناسه ممکن است با chrome.tabs.* استفاده شود API.
نوع
شماره
روشها
eval()
chrome.devtools.inspectedWindow.eval(
expression: string,
options?: object,
callback?: function,
): Promise<object>
عبارت جاوا اسکریپت را در بافت قاب اصلی صفحه بازرسیشده ارزیابی میکند. عبارت باید به شیء سازگار با JSON ارزیابی شود، درغیراینصورت استثنا ایجاد میشود. تابع eval میتواند خطای سمت DevTools یا استثنای JavaScript را که درطول ارزیابی رخ میدهد گزارش کند. در هر دو حالت، پارامتر result پاسخ تماس undefined است. درصورت بروز خطا در سمت DevTools، پارامتر isException غیرتهی است و isError روی true و code روی کد خطا تنظیم شده است. درصورت بروز خطای جاوا اسکریپت، isException روی true تنظیم میشود و value روی مقدار رشتهای شیء پرتابشده تنظیم میشود.
پارامترها
-
عبارت
رشته
عبارتی برای ارزیابی.
-
گزینهها
شیء اختیاری
پارامتر گزینهها میتواند شامل یک یا چند گزینه باشد.
-
frameURL
رشته اختیاری
اگر مشخص شده باشد، عبارت در iframe که نشانی وب آن با نشانی وب مشخصشده مطابقت دارد ارزیابی میشود. بهطور پیشفرض، عبارت در قاب بالایی صفحه بازرسیشده ارزیابی میشود.
-
scriptExecutionContext
رشته اختیاری
Chrome نسخه ۱۰۷ و بالاترعبارت را در بافت دستورگان محتوای افزونهای که با مبدأ مشخصشده مطابقت دارد ارزیابی میکند. اگر ارائه شود، scriptExecutionContext تنظیم «true» را در useContentScriptContext لغو میکند.
-
useContentScriptContext
بولی اختیاری
عبارت را در زمینه متن محتوای افزونه تماسگیرنده ارزیابی کنید، مشروط بر اینکه متن محتوا قبلاً به صفحه بازرسیشده تزریق شده باشد. اگر نه، عبارت ارزیابی نمیشود و فراخوانی با پارامتر استثنایی که روی شیئی تنظیم شده است که فیلد
isErrorآن روی true و فیلدcodeآن رویE_NOTFOUNDتنظیم شده است، فراخوانی میشود.
-
-
تماس برگشتی
تابع اختیاری
پارامتر
callbackبهصورت زیر است:(response: object) => void
-
پاسخ
شیء
Chrome نسخه ۱۵۱ و بالاترنتیجه ارزیابی و اطلاعات استثنا.
-
exceptionInfo
شیء
شیئی که جزئیات را ارائه میدهد اگر استثنایی هنگام ارزیابی عبارت رخ دهد.
-
کد
رشته
اگر خطا در سمت DevTools قبلاز ارزیابی عبارت رخ داده باشد، تنظیم میشود.
-
description
رشته
اگر خطا در سمت DevTools قبلاز ارزیابی عبارت رخ داده باشد، تنظیم میشود.
-
جزئیات
any[]
اگر خطا در سمت DevTools قبلاز ارزیابی عبارت رخ داده باشد، تنظیم میشود و حاوی آرایهای از مقادیر است که ممکن است در رشته شرح جایگزین شود تا اطلاعات بیشتری درباره علت خطا ارائه دهد.
-
isError
بولی
اگر خطا در سمت DevTools قبلاز ارزیابی عبارت رخ داده باشد، تنظیم میشود.
-
isException
بولی
اگر کد ارزیابیشده استثنای مدیریتنشدهای ایجاد کند، تنظیم میشود.
-
مقدار
رشته
اگر کد ارزیابیشده استثنای مدیریتنشدهای ایجاد کند، تنظیم میشود.
-
-
نتیجه
شیء
نتیجه ارزیابی.
-
-
بازگشتیها
-
Promise<object>
Chrome نسخه ۱۵۱ و بالاترتابعی که پساز تکمیل ارزیابی فراخوانی میشود.
Promises فقط برای «مانیفست نسخه ۳» و نسخههای جدیدتر پشتیبانی میشود، پلاتفرمهای دیگر باید از callbacks استفاده کنند.
getResources()
chrome.devtools.inspectedWindow.getResources(
callback?: function,
): Promise<Resource[]>
فهرست منابع را از صفحه بازرسیشده بازیابی میکند.
پارامترها
بازگشتیها
-
Promise<Resource[]>
Chrome نسخه ۱۵۱ و بالاترتابعی که پساز تکمیل درخواست، فهرست منابع را دریافت میکند.
Promises فقط برای «مانیفست نسخه ۳» و نسخههای جدیدتر پشتیبانی میشود، پلاتفرمهای دیگر باید از callbacks استفاده کنند.
reload()
chrome.devtools.inspectedWindow.reload(
reloadOptions?: object,
): void
صفحه بازرسیشده را مجدداً بار میکند.
پارامترها
-
reloadOptions
شیء اختیاری
-
ignoreCache
بولی اختیاری
وقتی درست باشد، بارکننده حافظه نهان را برای همه منابع صفحه بازرسیشده که قبلاز فعال شدن رویداد
loadبار شدهاند دور میزند. این اثر مشابه فشار دادن Ctrl+Shift+R در پنجره بازرسیشده یا در پنجره «ابزارهای توسعهدهنده» است. -
injectedScript
رشته اختیاری
اگر مشخص شود، اسکریپت بلافاصله پساز بار شدن، قبلاز هرکدام از اسکریپتهای قاب، به هر قاب صفحه بازرسیشده تزریق خواهد شد. پساز بار کردن مجدد بعدی، اسکریپت تزریق نخواهد شد—برای مثال، اگر کاربر Ctrl+R را فشار دهد.
-
userAgent
رشته اختیاری
درصورت مشخص شدن، این رشته مقدار سرایند HTTP
User-Agentرا که هنگام بار کردن منابع صفحه بازرسیشده ارسال میشود لغو میکند. این رشته همچنین مقدار ویژگیnavigator.userAgentرا که به هر اسکریپت درحال اجرا در صفحه بازرسیشده برگردانده میشود لغو میکند.
-
رویدادها
onResourceAdded
chrome.devtools.inspectedWindow.onResourceAdded.addListener(
callback: function,
)
وقتی منبع جدیدی به صفحه بازرسیشده اضافه میشود، فعال میشود.
پارامترها
-
تماس برگشتی
عملکرد
پارامتر
callbackبهصورت زیر است:(resource: Resource) => void
-
منبع
-
onResourceContentCommitted
chrome.devtools.inspectedWindow.onResourceContentCommitted.addListener(
callback: function,
)
وقتی نسخه جدیدی از منبع ثبت میشود (مثلاً کاربر نسخه ویرایششده منبع را در «ابزارهای توسعهدهنده» ذخیره میکند) فعال میشود.