منتشر شده: ۸ آوریل ۲۰۲۶
مگر اینکه خلاف آن ذکر شده باشد، تغییرات زیر در جدیدترین نسخه کانال بتای کروم برای اندروید، ChromeOS، لینوکس، macOS و ویندوز اعمال میشود. با استفاده از لینکهای ارائه شده یا با مراجعه به ChromeStatus.com درباره این ویژگیها بیشتر بدانید. کروم در این نسخه در مرحله بتا است. میتوانید آخرین نسخه بتا را از Google.com برای دسکتاپ یا از فروشگاه گوگل پلی برای اندروید دانلود کنید.
سیاساس و رابط کاربری
کوئریهای کانتینر فقط-نام در CSS
اکنون میتوانید یک کانتینر CSS را تنها بر اساس container-name آن و بدون تنظیم container-type روی عنصر، جستجو کنید.
#container {
container-name: --foo;
}
@container --foo {
input { background-color: green; }
}
<div id="container">
<div><input></div>
</div>
سرریز متن کلیپ در تعامل کاربر
وقتی کاربر با متنی که ویژگی text-overflow: ellipsis روی آن تنظیم شده است، تعامل میکند (مثلاً با ویرایش یا استفاده از پیمایش با استفاده از caret)، متن به طور موقت از ellipsis به clip تغییر حالت میدهد. این به کاربر اجازه میدهد محتوای سرریز پنهان را ببیند و با آن تعامل داشته باشد. این ویژگی برای همه عناصر قابل ویرایش و غیرقابل ویرایش اعمال میشود. برای کنترلهای فرم، مانند <textarea> و <input> ، این رفتار از قبل پشتیبانی میشود.
تنظیم صحیح dropEffect برای رویدادهای dragEnter ، dragLeave و dragOver
مشخصات کشیدن و رها کردن ایجاب میکند که ویژگی dropEffect شیء dataTransfer مقادیر از پیش تعیینشدهای روی dragEnter ، dragOver و dragLeave داشته باشد. dragEnter و dragOver باید بر اساس effectAllowed فعلی، یک dropEffect داشته باشند. dragLeave همیشه باید یک dropEffect none باشد. در حال حاضر، کروم به این قوانین پایبند نیست. از کروم ۱۴۸ به بعد، کروم به این مشخصات احترام گذاشته و مقادیر صحیح را به این ویژگی اختصاص خواهد داد.
بارگذاری تنبل عناصر ویدیویی و صوتی
این ویژگی، ویژگی loading را به عناصر <video> و <audio> اضافه میکند. این به توسعهدهندگان اجازه میدهد تا بارگذاری منابع رسانهای را تا زمانی که عنصر با استفاده از loading="lazy" به نزدیکی viewport برسد، به تعویق بیندازند. این با رفتار بارگذاری تنبل موجود برای عناصر <img> و <iframe> مطابقت دارد که عملکرد بارگذاری صفحه را بهبود میبخشد و استفاده از دادهها را کاهش میدهد.
تابع at-rule() CSS برای تشخیص ویژگی
این ویژگی یک تابع at-rule() به CSS @supports اضافه میکند که به نویسندگان اجازه میدهد پشتیبانی از at-rules در CSS را تشخیص دهند.
کلمه کلیدی revert-rule را اضافه کنید
کلمه کلیدی revert-rule ، آبشار را به قانون قبلی برمیگرداند، مشابه نحوهای که revert-layer آبشار را به لایه قبلی برمیگرداند. برای مثال:
div { color: green; }
div { color: revert-rule; /* Effectively green */ }
این امر به ویژه در مورد شرطها مفید است زیرا به شما امکان میدهد در صورت عدم برآورده شدن شرط، قانون فعلی را حذف کنید:
div {
display: if(style(--layout: fancy): grid; else: revert-rule);
}
پشتیبانی از text-decoration-skip-ink: all
این ویژگی پشتیبانی از مقدار all را برای ویژگی text-decoration-skip-ink در CSS اضافه میکند. ویژگی text-decoration-skip-ink از قبل از auto و none پشتیبانی میکند. مقدار all این قابلیت را با اعمال بیقید و شرط پرش جوهر به تمام گلیفها، از جمله کاراکترهای CJK، گسترش میدهد. در مقابل، auto کاراکترهای CJK را بدون پرش جوهر باقی میگذارد زیرا پرش جوهر معمولاً نتایج بصری نامطلوبی را برای اسکریپتهای تصویری در موقعیتهای معمول زیرخط ایجاد میکند. با text-decoration-skip-ink: all ، نویسندگانی که text-underline-position یا text-underline-offset برای جلوگیری از تداخل با گلیفهای CJK تنظیم کردهاند، میتوانند به صراحت پرش جوهر را برای آن کاراکترها انتخاب کنند.
API های وب
محلیسازی اعضای مانیفست
این ویژگی از محلیسازی اعضای مانیفست پشتیبانی میکند، که به برنامهها اجازه میدهد نامها، توضیحات، آیکونها و میانبرهای خود را با زبان و منطقه کاربر تطبیق دهند. توسعهدهندگان مقادیر محلیشده را در مانیفست برنامه وب ارائه میدهند. مرورگر بهطور خودکار منابع مناسب را بر اساس تنظیمات زبان کاربر انتخاب میکند، که پشتیبانی از زبان در بازارهای مختلف را معرفی میکند.
پشتیبانی از فرمت فونت باز avar2 برای شکلدهی متن و رندر حروف
نسخه ۲ جدول avar (Axis Variations) به طراحان فونت اجازه میدهد فونتهای متغیر با کنترل بهتر بر درونیابی ایجاد کنند. در حالی که مشخصات فونت متغیر اصلی، محورها را به طور مستقل مدیریت میکند، avar2 به محورها اجازه میدهد تا بر یکدیگر تأثیر بگذارند. این امر منجر به فونتهایی میشود که استفاده از آنها برای نویسندگان محتوا آسانتر است و امکان ذخیرهسازی فشرده را فراهم میکند.
Avar2 با استفاده از همان مفاهیم آشنای تغییرات فونت کار میکند، اما به شما امکان میدهد مقادیر دلتای متغیر را به خود محورهای طراحی اعمال کنید. میتوانید این کار را در طیف وسیعی از محورهای مختلف انجام دهید.
برای مثال، میتوانید متا اسلایدرهایی ایجاد کنید که چندین محور تغییر را به طور همزمان کنترل کنند. این کار باعث میشود کاربر از تنظیم دقیق و یافتن گوشهای مفید از فضای طراحی فونت، راحتتر شود.
Avar2 به طراحان فونت کنترل بهتری بر فضای قابل استفاده برای تغییر فونت خود میدهد و به آنها اجازه میدهد تا تنظیم محورهای طراحی را در چندین محور هماهنگ کنند. با تعریف روابط ریاضی بین محورها در جدول avar نسخه 2، فونتها میتوانند به طرحهای پیچیدهای با تعداد کمتری master دست یابند. این امر منجر به حجم فایل کمتر میشود زیرا درونیابی به طور مؤثرتری ذخیره میشود.
احراز هویت وب، حالت رابط کاربری فوری
این حالت جدید برای navigator.credentials.get() باعث میشود که رابط کاربری ورود به سیستم مرورگر در صورت وجود کلید عبور یا رمز عبور برای سایت، بلافاصله برای کاربر نمایش داده شود. در غیر این صورت، اگر چنین اعتباری در دسترس نباشد، با NotAllowedError این وعده را رد میکند. این امر به سایت اجازه میدهد در صورتی که مرورگر بتواند انتخابهایی از اعتبارنامههای ورود به سیستم را که احتمالاً موفق میشوند ارائه دهد، از نمایش صفحه ورود به سیستم جلوگیری کند. این حالت همچنان برای مواردی که چنین اعتبارنامههایی وجود ندارند، جریان صفحه ورود به سیستم را مجاز میکند.
پشتیبانی از API سریال وب در اندروید
رابط برنامهنویسی وب سریال (Web Serial API) رابطی برای اتصال به دستگاههای سریال فراهم میکند. این دستگاهها میتوانند از طریق پورت سریال روی سیستم کاربر یا از طریق دستگاههای USB و بلوتوث قابل جابجایی که پورت سریال را شبیهسازی میکنند، متصل شوند. این رابط برنامهنویسی اکنون در اندروید پشتیبانی میشود.
کاربران، به ویژه در بخشهای آموزشی، سرگرمی و صنعتی، دستگاههای جانبی را به رایانههای خود متصل میکنند که برای کنترل به نرمافزارهای سفارشی نیاز دارند. به عنوان مثال، رباتیک اغلب برای آموزش برنامهنویسی کامپیوتر و الکترونیک در مدارس استفاده میشود. این امر به نرمافزاری نیاز دارد که بتواند کد را روی یک ربات آپلود کند یا آن را از راه دور کنترل کند. در یک محیط صنعتی یا سرگرمی، یک قطعه از تجهیزات، مانند فرز، برش لیزری یا چاپگر سهبعدی، توسط برنامهای که روی یک رایانه متصل اجرا میشود، کنترل میشود. این دستگاهها اغلب توسط میکروکنترلرهای کوچک از طریق اتصال سریال کنترل میشوند.
ویژگی linear_indexing WebGPU
این قابلیت دو مقدار داخلی جدید برای سایهزن محاسباتی اضافه میکند تا تجربه کاربری را بهبود بخشد. این مقادیر برای همه backendها (به عنوان polyfillهای مقادیر داخلی موجود) پیادهسازی شدهاند.
پشتیبانی SharedWorker در اندروید
مدت زیادی است که SharedWorker به دلیل نگرانیهایی در مورد چرخه عمر غیرقابل پیشبینی فرآیند آن، در اندروید غیرفعال شده است. توسعهدهندگان کروم معتقد بودند که نمونههای SharedWorker ممکن است بدون اطلاع کاربران یا توسعهدهندگان وب، بهطور غیرمنتظرهای خاتمه یابند. این موضوع غیرقابل قبول تلقی میشد.
با این حال، بحثی اخیر در گیتهاب نشان میدهد که ماهیت غیرقابلپیشبینی چرخه عمر فرآیند SharedWorker ممکن است آنطور که قبلاً تصور میشد، مسئلهی مهمی نباشد. بر این اساس، کروم در حال فعالسازی مجدد SharedWorker در اندروید است و همزمان این رفتار را بررسی میکند تا از یک تجربه پایدار و قابل اعتماد اطمینان حاصل کند.
افزایش طول عمر کارگران مشترک
این بهروزرسانی گزینه جدیدی به نام extendedLifetime: true به سازنده SharedWorker اضافه میکند. این گزینه درخواست میکند که کارگر مشترک حتی پس از تخلیه تمام کلاینتهای فعلی فعال باقی بماند. کاربرد اصلی این گزینه این است که به صفحات اجازه داده شود کارهای ناهمزمانی را انجام دهند که پس از تخلیه یک صفحه به جاوا اسکریپت نیاز دارد، بدون اینکه نیازی به تکیه بر یک کارگر سرویس باشد.
API سریع
رابط برنامهنویسی کاربردی Prompt به توسعهدهندگان وب دسترسی مستقیم به یک مدل زبان هوش مصنوعی روی دستگاه ارائه شده توسط مرورگر را میدهد. طراحی این رابط برنامهنویسی کاربردی، کنترل دقیقی را ارائه میدهد که با اشکال رابط برنامهنویسی کاربردی ابری همسو است. این به شما امکان میدهد تا به تدریج سایتها را با تعاملات مدل متناسب با موارد استفاده شخصی بهبود بخشید. این امر، رابطهای برنامهنویسی کاربردی مدل زبان مبتنی بر وظیفه (به عنوان مثال، رابط برنامهنویسی کاربردی Summarizer ) و رابطهای برنامهنویسی کاربردی و چارچوبهای متنوع برای استنتاج روی دستگاه عمومی را با مدلهای یادگیری ماشین ارائه شده توسط توسعهدهنده تکمیل میکند. پیادهسازی اولیه از ورودیهای متن، تصویر و صدا و همچنین محدودیتهای پاسخ پشتیبانی میکند که تضمین میکند متن تولید شده با عبارات منظم از پیش تعریف شده و قالبهای طرحواره JSON مطابقت دارد.
این قابلیت از موارد استفاده متنوعی پشتیبانی میکند. برای مثال، میتواند زیرنویس تصاویر را ایجاد کند، جستجوهای بصری انجام دهد، صدا را رونویسی کند، رویدادهای صوتی را طبقهبندی کند، متن را طبق دستورالعملهای خاص تولید کند و اطلاعات یا بینشها را از منابع چندوجهی استخراج کند.
این API قبلاً در افزونههای کروم منتشر شده است. این هدف، انتشار در وب را ردیابی میکند. یک سیاست سازمانی، GenAILocalFoundationalModelSettings ، برای غیرفعال کردن دانلود مدل اصلی در دسترس است که این API را غیرقابل دسترس میکند. مدیران سازمانی همچنین میتوانند سیاست BuiltInAIAPIsEnabled را طوری تنظیم کنند که استفاده از API هوش مصنوعی داخلی را مسدود کند، در حالی که همچنان به سایر ویژگیهای GenAI روی دستگاه اجازه میدهد.
گزارش پشتیبانی زبان:
- کروم ۱۳۹ و نسخههای قبل از آن فقط از زبان انگلیسی (
'en') پشتیبانی میکردند. - کروم ۱۴۰ پشتیبانی از زبانهای اسپانیایی و ژاپنی (
'es'و'ja') را اضافه کرد
قابلیتهای تأیید پرداخت امن را دریافت کنید
این ویژگی یک متد استاتیک جدید به API درخواست پرداخت اضافه میکند که به توسعهدهندگان وب اجازه میدهد قابلیتهای پیادهسازی مرورگر از تأیید پرداخت امن را دریافت کنند. این به توسعهدهندگان وب کمک میکند تا بدانند چه قابلیتهایی برای تأیید پرداخت امن در دسترس است. سپس میتوانند تصمیم بگیرند که آیا از تأیید پرداخت امن با آن قابلیتها استفاده کنند یا خیر.
قوانین IDNA ContextJ
IDNA مکانیزمی برای کاراکترهای غیر ASCII در نام دامنه است. این مکانیزم، یک URL مانند http://네이버.한국/ به صورت http://xn--950bt9s8xi.xn--3e0b707e/ (یک ریدایرکت به naver.com) کدگذاری میکند.
مشخصات URL، پرچم CheckJoiners را تنظیم میکند که قوانین ContextJ در IDNA2008 فعال میکند. این امر ZWNJ (U+200C ZERO WIDTH NON-JOINER) و ZWJ (U+200D ZERO WIDTH JOINER) را در اکثر مکانهای URL غیرفعال میکند. پیادهسازی، گزینه UIDNA_CHECK_CONTEXTJ را به ICU، جایی که این قانون پیادهسازی شده است، منتقل میکند.
استفاده مجدد از تصاویر بدون ذخیره در تخصیص مجدد same-src
این ویژگی اجازه میدهد تا استفاده مجدد از تصویر در دسترس در سند مشابه، Cache-Control: no-store reload را هنگامی که مقدار src یکسانی به یک عنصر <img> دوباره اختصاص داده میشود، دور بزند. پیش از این، Blink تصویر را دوباره واکشی میکرد، حتی اگر قبلاً رمزگشایی شده و در سند موجود بود. این با رفتار موجود Gecko و WebKit همسو است.
فیلد contentType را به Resource Timing اضافه کنید.
این ویژگی فیلد contentType را به PerformanceResourceTiming اضافه میکند تا رشتهای را که با نوع محتوای منبع واکشی شده، همانطور که توسط سرور برگردانده میشود، مطابقت دارد، در خود نگه دارد.
رویدادهای اشارهگر را در شروع کشیدن (drag) سرکوب کنید
طبق مشخصات HTML، وقتی یک درگ شروع میشود، عامل کاربر باید رویدادهای مناسب را به منبع درگ ارسال کند تا نشان دهد که جریان رویداد اشارهگر پایان یافته است و نباید انتظار رویدادهای بیشتری از این اشارهگر را داشته باشد. این کد تا حدی برای رویدادهای ماوس و به طور کامل برای درگهای لمسی در اندروید پیادهسازی شده است. با این ویژگی، کروم قصد دارد این الزام مشخصات را در تمام پلتفرمهای دیگر به طور کامل برآورده کند. عملاً، این بدان معناست که پس از شروع درگ، منبع درگ اکنون رویدادهای pointercancel ، pointerout و pointerleave را دریافت میکند تا نشان دهد که جریان رویداد فعلی به پایان رسیده است.
کانال داده WebRTC: همیشه کانالهای داده را مدیریت کنید
این ویژگی یک افزونه WebRTC به alwaysNegotiateDataChannels را پیادهسازی میکند که روشی را برای یک برنامه تعریف میکند تا کانالهای داده را در یک پیشنهاد SDP قبل از ایجاد یک کانال داده مذاکره کند. این همچنین بخش m= داده را قبل از هر بخش m صوتی یا تصویری مذاکره میکند و از آن به عنوان «بخش m= با برچسب پیشنهاد دهنده» برای [BUNDLE] استفاده میکند.
این یعنی اگر شما یک RTCPeerConnection با alwaysNegotiateDataChannels: true ایجاد کنید و سپس createOffer() را فراخوانی کنید، یک پیشنهاد با یک خط m برنامه در SDP ایجاد میشود. برای مثال:
const pc = new RTCPeerConnection({
alwaysNegotiateDataChannels: true});
const offer = await pc.createOffer();
اگر یک فرستنده-گیرنده صوتی و یک کانال داده نیز اضافه کنید، پیشنهاد، یک خط m کاربردی و به دنبال آن یک خط m صوتی در SDP را مذاکره میکند:
const pc = new RTCPeerConnection({
alwaysNegotiateDataChannels: true});
pc.addTransceiver('audio');
pc.createDataChannel('somechannel');
const offer = await pc.createOffer();
آزمایشهای منشأ جدید
در کروم ۱۴۸، میتوانید در آزمایشهای جدید زیر شرکت کنید.
ورود فدرال Agentic
مجموعهای از افزونههای FedCM برای کمک به مرورگرهای عاملگرا جهت ورود ایمن کاربران به وبسایتها با استفاده از حسابهای کاربری فدرالشان.
لیستهای مجاز اتصال
لیستهای مجاز اتصال، قابلیتی است که برای ارائه کنترل صریح بر نقاط انتهایی خارجی با محدود کردن اتصالات آغاز شده از طریق Fetch API یا سایر APIهای پلتفرم وب از یک سند یا Worker طراحی شده است. پیادهسازی پیشنهادی، یک لیست نقاط انتهایی مجاز را از طریق یک هدر پاسخ HTTP از سرور توزیع میکند. قبل از اینکه عامل کاربر هرگونه اتصالی را از طرف یک صفحه برقرار کند، عامل مقصد را با این لیست مجاز ارزیابی میکند. اتصالات به نقاط انتهایی تأیید شده مجاز هستند، در حالی که آنهایی که با ورودیهای موجود در لیست مطابقت ندارند، مسدود میشوند.
زمانبندی کانتینر
API زمانبندی کانتینر به شما امکان میدهد تا زمان نمایش بخشهای حاشیهنویسیشده DOM روی صفحه و اتمام رنگآمیزی اولیه آنها را رصد کنید. میتوانید زیربخشهای DOM را با ویژگی containertiming (شبیه به elementtiming برای API زمانبندی عنصر) علامتگذاری کنید و پس از اولین رنگآمیزی آن بخش، ورودیهای عملکرد را دریافت کنید. این API به شما امکان میدهد زمانبندی اجزای مختلف را در صفحات خود اندازهگیری کنید.
اسکریپتهای ماژول CSS اعلانی
اسکریپتهای ماژول CSS اعلانی، افزونهای از اسکریپتهای ماژول CSS مبتنی بر اسکریپت موجود هستند. آنها به توسعهدهندگان اجازه میدهند تا استایلشیتهای اعلانی را با ریشههای سایه، از جمله ریشههای سایه اعلانی، به اشتراک بگذارند. توسعهدهندگان میتوانند ماژولهای سبک درونخطی را با <style type="module" specifier="foo"> تعریف کنند و با ارجاع به specifier یا یک URL، مانند <template shadowrootmode="open" shadowrootadoptedstylesheets="foo"> یک ماژول اعلانی را به یک DOM سایه اعلانی اعمال کنند.
HTML-در-بوم
HTML-in-canvas یک API جدید است که به شما امکان میدهد عناصر رندر DOM را مستقیماً در یک canvas یا بافت WebGL / WebGPU سفارشی کنید و در عین حال تعامل و دسترسی به محتوا را حفظ کنید. این API سه بخش دارد: یک ویژگی برای عناصر canvas انتخابی ( layoutsubtree )، روشهایی برای ترسیم عناصر فرزند ( 2d: drawElementImage ، webgl:texElementImage2D ، webgpu: copyElementImageToTexture ) و روشی برای بهروزرسانی صحیح تبدیل عنصر روی صفحه برای تعامل.
مدت زمان سبک فریمهای انیمیشن بلند
این ویژگی اطلاعات styleDuration و forcedStyleDuration را به Long Animation Frame API اضافه میکند. این به توسعهدهندگان اجازه میدهد تا زمانهای style و layout را تشخیص دهند.
OpaqueRange
OpaqueRange نشاندهندهی یک محدودهی زنده از متن درون مقدار یک کنترل فرم (برای مثال، یک <textarea> یا یک <text <input> ) است، بنابراین توسعهدهندگان میتوانند با استفاده از APIهای شبیه به محدوده، با متن مقدار کار کنند.
این امکان عملیاتی مانند getBoundingClientRect() ، getClientRects() را فراهم میکند و با API CSS Highlights برای رابط کاربری مانند پیشنهادات درونخطی، هایلایتها و popoverهای لنگری استفاده میشود. این قابلیت با افشای فقط آفستهای مقدار (و بازگرداندن null برای startContainer و endContainer )، کپسولهسازی را حفظ میکند، بنابراین نقاط پایانی DOM و ساختار داخلی در معرض دید قرار نمیگیرند.
تجزیه دستورالعملهای پردازش در HTML
دستورالعملهای پردازش (syntax: <?target data> ) یک ساختار DOM موجود هستند که در XML نمایش داده میشوند. این ساختار به اشیاء گرهای که عنصر نیستند، اجازه میدهد تا برای پردازش یک سند، معنای معنایی داشته باشند. به عنوان مثال، میتوانید از آنها برای مشخص کردن محدودههایی برای پخش یا برجستهسازی بدون نیاز به عناصر DOM جدید و تغییر ساختار DOM تا آنجا که به CSS مربوط میشود، استفاده کنید. همچنین میتوانید از آنها به عنوان دستورالعملهایی برای تجزیهکننده HTML در مورد نحوه بافر کردن و پخش استفاده کنید.
سیاست مجوزها: تمرکز-بدون-فعالسازی-کاربر
این خطمشی به جاسازیکنندگان (embedders) از طریق خطمشی مجوزهای focus-without-user-activation امکان کنترل فوکوس برنامهریزیشده از محتوای جاسازیشده را میدهد. هنگامی که این خطمشی برای یک فریم رد میشود، فراخوانیهای فوکوس برنامهریزیشده ( element.focus() ، autofocus ، window.focus() ، dialog.showModal() و popover focus) مسدود میشوند، مگر اینکه توسط فعالسازی کاربر فعال شوند. فوکوس آغاز شده توسط کاربر، مانند کلیک کردن یا tab کردن، هرگز تحت تأثیر قرار نمیگیرد. میتوانید این خطمشی را از طریق هدر پاسخ HTTP Permissions-Policy یا ویژگی iframe allow تنظیم کنید. واگذاری فوکوس پشتیبانی میشود. یک فریم والد که focus دارد، میتواند به صورت برنامهریزیشده focus را به یک iframe فرزند منتقل کند، حتی اگر این خطمشی در فرزند رد شده باشد. هنگامی که یک فریم focus دارد، میتواند focus را در زیردرخت خود جابجا کند.
پارامترهای نمونهبرداری API سریع
این ویژگی پارامترهای نمونهبرداری را به Prompt API اضافه میکند. این پارامترها نحوه نمونهبرداری توکنها از مدل را کنترل میکنند که به توسعهدهندگان امکان کنترل خلاقیت یا تصادفی بودن خروجی را میدهد. علاوه بر این، ویژگیهایی را به نمونه LanguageModel اضافه میکند تا مقادیر تعیینشده را بخواند. همچنین یک تابع استاتیک LanguageModel اضافه میکند تا مقادیر پیشفرض و حداکثر این پارامترها را دریافت کند. اولین پیادهسازی پارامترهای temperature و topK را اضافه میکند.
عنصر نصب HTML برنامه وب
این ویژگی به وبسایت اجازه میدهد تا به صورت اعلانی از کاربران بخواهد که یک برنامه وب را نصب کنند. این عنصر به صورت اختیاری دو ویژگی را میپذیرد که به شما امکان میدهد محتوا را از یک منبع متفاوت نصب کنید.