مسدود کردن dev-tool
اگر امکانش رو دارید به این سایت [+لینک] بروید و با هر روشی dev-tools رو باز کنید
پکیجی برای غیرفعالسازی ابزارهای توسعهدهندهی وب از طریق دکمهی F12، کلیک راست و منوی مرورگر
🔗https://theajack.github.io/disable-devtool/
#️⃣#npm_module
👥@IR_javascript_group
🆔@IR_javascript
اگر امکانش رو دارید به این سایت [+لینک] بروید و با هر روشی dev-tools رو باز کنید
پکیجی برای غیرفعالسازی ابزارهای توسعهدهندهی وب از طریق دکمهی F12، کلیک راست و منوی مرورگر
🔗https://theajack.github.io/disable-devtool/
#️⃣#npm_module
👥@IR_javascript_group
🆔@IR_javascript
🥰1😁1
EyeDropper API: انتخاب رنگها مستقیم از روی صفحه 🤩
هر ساله APIهای بومی جدیدی برای مرورگرها معرفی میشوند و یکی از این ابزارهای جالب، EyeDropper API است.
EyeDropper API به توسعهدهندگان وب این امکان را میدهد که کاربران بتوانند با استفاده از ابزار قطرهچکان (pipette) رنگها را مستقیماً از صفحه انتخاب کنند. پس از انتخاب، مقدار رنگ به صورت sRGBHex (مثل
---
### نمونه ساده استفاده:
---
### نحوه عملکرد 🧐
1. فراخوانی متد
2. باز شدن ابزار قطرهچکان در مرورگر؛
3. انتخاب رنگ توسط کاربر؛
4. بازگرداندن رنگ انتخابشده در فرمت `#RRGGBB`.
---
### مزایای API
* سادگی: تنها با چند خط کد میتوان انتخاب رنگ را در وبسایت ادغام کرد.
* تعاملپذیری: امکان تنظیم رابط کاربری و اجازه دادن به کاربران برای انتخاب رنگ پسزمینه، متن یا سایر عناصر.
* کاربرد در طراحی: ایدهآل برای ویرایشگرهای آنلاین تصویر، تولیدکنندههای پالت رنگ و رابطهای واکنشگرا.
---
### محدودیت پشتیبانی
این API در حال حاضر فقط در Chrome، Edge و Opera پشتیبانی میشود. در مرورگرهای Safari و Firefox هنوز قابل استفاده نیست.
#️⃣#tip
👥@IR_javascript_group
🆔@IR_javascript
هر ساله APIهای بومی جدیدی برای مرورگرها معرفی میشوند و یکی از این ابزارهای جالب، EyeDropper API است.
EyeDropper API به توسعهدهندگان وب این امکان را میدهد که کاربران بتوانند با استفاده از ابزار قطرهچکان (pipette) رنگها را مستقیماً از صفحه انتخاب کنند. پس از انتخاب، مقدار رنگ به صورت sRGBHex (مثل
#ff5733) بازگردانده میشود.---
### نمونه ساده استفاده:
if ("EyeDropper" in window) {
const eyeDropper = new EyeDropper();
eyeDropper.open()
.then(result => {
console.log("رنگ انتخابشده:", result.sRGBHex);
document.body.style.backgroundColor = result.sRGBHex;
})
.catch(err => {
console.error("خطا:", err);
});
}---
### نحوه عملکرد 🧐
1. فراخوانی متد
open() روی شیء `EyeDropper`؛2. باز شدن ابزار قطرهچکان در مرورگر؛
3. انتخاب رنگ توسط کاربر؛
4. بازگرداندن رنگ انتخابشده در فرمت `#RRGGBB`.
---
### مزایای API
* سادگی: تنها با چند خط کد میتوان انتخاب رنگ را در وبسایت ادغام کرد.
* تعاملپذیری: امکان تنظیم رابط کاربری و اجازه دادن به کاربران برای انتخاب رنگ پسزمینه، متن یا سایر عناصر.
* کاربرد در طراحی: ایدهآل برای ویرایشگرهای آنلاین تصویر، تولیدکنندههای پالت رنگ و رابطهای واکنشگرا.
---
### محدودیت پشتیبانی
این API در حال حاضر فقط در Chrome، Edge و Opera پشتیبانی میشود. در مرورگرهای Safari و Firefox هنوز قابل استفاده نیست.
#️⃣#tip
👥@IR_javascript_group
🆔@IR_javascript
👍1
مرتب نگه داشتن head
با یک اسکریپت جالب برخورد کردم که امکان انجام یک حسابرسی بسیار سریع و اصلاح نسبتاً سریع ترتیب تگها درون <head> را فراهم میکند.
یک قطعه CSS از هری رابرتز وجود دارد که ترتیب نادرست تگهای سیستمی را برجسته میکند. این فایل ct.css نام دارد [+لینک]. همچنین یک ارائه درباره این قطعه وجود دارد. هری یک متخصص فوقالعاده در زمینه عملکرد وب است و اسلایدهای او [+لینک] بسیار متقاعدکننده هستند.
اسکریپت capo.js تقریباً همان کار را انجام میدهد، با این تفاوت که نتایج حسابرسی را در کنسول نمایش میدهد و پیشنهاد میکند چگونه متا تگها، نشانهگذاری و سایر محتوای <head> را بهتر مرتب کنیم تا مهمترین اطلاعات برای بارگذاری سریع صفحه در اولویت قرار گیرند و بقیه موارد بعداً بارگذاری شوند.
#️⃣#tool
👥@IR_javascript_group
🆔@IR_javascript
با یک اسکریپت جالب برخورد کردم که امکان انجام یک حسابرسی بسیار سریع و اصلاح نسبتاً سریع ترتیب تگها درون <head> را فراهم میکند.
یک قطعه CSS از هری رابرتز وجود دارد که ترتیب نادرست تگهای سیستمی را برجسته میکند. این فایل ct.css نام دارد [+لینک]. همچنین یک ارائه درباره این قطعه وجود دارد. هری یک متخصص فوقالعاده در زمینه عملکرد وب است و اسلایدهای او [+لینک] بسیار متقاعدکننده هستند.
اسکریپت capo.js تقریباً همان کار را انجام میدهد، با این تفاوت که نتایج حسابرسی را در کنسول نمایش میدهد و پیشنهاد میکند چگونه متا تگها، نشانهگذاری و سایر محتوای <head> را بهتر مرتب کنیم تا مهمترین اطلاعات برای بارگذاری سریع صفحه در اولویت قرار گیرند و بقیه موارد بعداً بارگذاری شوند.
#️⃣#tool
👥@IR_javascript_group
🆔@IR_javascript
Speaker Deck
Get Your Head Straight
Despite being the only section of a website that a user never sees, the HEAD is arguably the most important. It is bound to its own unique set of rules …
ترتیب عناصر در
چند وقت یکبار به
ابتدا باید از صحت ساختار اطمینان حاصل کرد. درون
* یک عنصر
* یک عنصر
* صفر یا بیشتر عناصر
* صفر یا بیشتر عناصر
* صفر یا بیشتر عناصر
* صفر یا بیشتر عناصر
* صفر یا بیشتر عناصر
* صفر یا بیشتر عناصر
اگر هر عنصر دیگری در
مثال:
پارسر این کد را به شکل زیر بازسازی میکند:
این موضوع پیامدهای مختلفی دارد، زیرا محل و اولویت عناصر در صف بارگذاری منابع، وضعیت مسدودسازی پارسر و عملکرد اسکریپتهایی که به
عناصر غیرمجاز در
دستورالعملهای این افزونهها اغلب پیشنهاد میکنند که کد مربوطه در ابتدای
منبع دیگر مشکلات، ترتیب نادرست عناصر در
دو ابزار برای شناسایی مشکلات ترتیب عناصر وجود دارد:
*
*
مدیران تگ نیز توجه ویژهای میطلبند، زیرا از طریق آنها اسکریپتهای بازاریابی مختلف بهطور غیرقابل کنترل وارد سایت شده و
#️⃣#tip
👥@IR_javascript_group
🆔@IR_javascript
<head>چند وقت یکبار به
<head> پروژههای خود سر میزنید و بررسی میکنید که چه اتفاقی در آنجا میافتد؟ بهتر است این کار را بهصورت دورهای انجام دهید، زیرا محتوای <head> و ترتیب عناصر میتواند تأثیر منفی بر عملکرد سایت داشته باشد.ابتدا باید از صحت ساختار اطمینان حاصل کرد. درون
<head> تنها برخی عناصر مشخص مجاز هستند:* یک عنصر
<title>* یک عنصر
<base>* صفر یا بیشتر عناصر
<link>* صفر یا بیشتر عناصر
<meta>* صفر یا بیشتر عناصر
<script>* صفر یا بیشتر عناصر
<style>* صفر یا بیشتر عناصر
<template>* صفر یا بیشتر عناصر
<noscript>اگر هر عنصر دیگری در
<head> مشاهده شود، پارسر فوراً <head> را میبندد و عناصر باقیمانده را به <body> منتقل میکند.مثال:
<head>
<meta charset="utf-8">
<title>سایت من</title>
<img src="pixel.png">
<link
rel="preload"
href="custom-font.woff2"
as="font"
type="font/woff2"
>
<link
rel="stylesheet"
href="styles.css"
>
<script
src="script.js"
defer
></script>
</head>
<body>
<!-- ... -->
</body>
پارسر این کد را به شکل زیر بازسازی میکند:
<head>
<meta charset="utf-8">
<title>سایت من</title>
</head>
<body>
<img src="pixel.png">
<link
rel="preload"
href="custom-font.woff2"
as="font"
type="font/woff2"
>
<link
rel="stylesheet"
href="styles.css"
>
<script
src="script.js"
defer
></script>
<!-- ... -->
</body>
این موضوع پیامدهای مختلفی دارد، زیرا محل و اولویت عناصر در صف بارگذاری منابع، وضعیت مسدودسازی پارسر و عملکرد اسکریپتهایی که به
<head> وابستهاند، تغییر میکند.عناصر غیرمجاز در
<head> معمولاً هنگام ادغام «پیکسلها»، فریمهای تحلیلی و دیگر افزونههای جانبی ظاهر میشوند و معمولاً شامل <img>`، <iframe> و <div>` هستند.دستورالعملهای این افزونهها اغلب پیشنهاد میکنند که کد مربوطه در ابتدای
<body> قرار گیرد، اما گاهی همراه با <script> به <head> وارد میشوند. استفاده از ولیدیتور HTML میتواند چنین خطاهایی را شناسایی کند.منبع دیگر مشکلات، ترتیب نادرست عناصر در
<head> است. جابجایی ساده عناصر به ترتیب مناسب میتواند زمان بارگذاری را تا چند ثانیه کاهش دهد. در این زمینه، سخنرانی بسیار خوبی توسط هری رابرتز موجود است.دو ابزار برای شناسایی مشکلات ترتیب عناصر وجود دارد:
*
ct.css — فایل استایلی که عناصر <head> را قابل مشاهده میکند و نقاط مشکلدار را برجسته میسازد.*
capo.js — قطعه کدی که محتوای <head> را تحلیل کرده و ترتیب فعلی و مرتبشده را در کنسول نمایش میدهد.مدیران تگ نیز توجه ویژهای میطلبند، زیرا از طریق آنها اسکریپتهای بازاریابی مختلف بهطور غیرقابل کنترل وارد سایت شده و
<head> را شلوغ میکنند. #️⃣#tip
👥@IR_javascript_group
🆔@IR_javascript
Quicklink
یک کتابخانه کوچک جاوااسکریپت که برای شناسایی لینکهایی طراحی شده است که وارد ناحیه قابل مشاهده مرورگر (viewport) میشوند و منابعی را که این لینکها به آنها اشاره دارند، بهصورت خودکار پیشبارگذاری میکند. این کتابخانه DOM را تحلیل میکند، لینکهایی را که در دید کاربر قرار دارند شناسایی میکند و بارگذاری منابع مرتبط (مانند تصاویر، اسکریپتها یا دادههای دیگر) را آغاز میکند و آنها را در کش ذخیره میکند تا دسترسی بعدی سریعتر شود. این ویژگی بهویژه برای بهینهسازی عملکرد صفحات وب مفید است، زیرا زمان بارگذاری هنگام کلیک روی لینکها را کاهش میدهد.
🔗https://getquick.link/
#️⃣#npm_module
👥@IR_javascript_group
🆔@IR_javascript
یک کتابخانه کوچک جاوااسکریپت که برای شناسایی لینکهایی طراحی شده است که وارد ناحیه قابل مشاهده مرورگر (viewport) میشوند و منابعی را که این لینکها به آنها اشاره دارند، بهصورت خودکار پیشبارگذاری میکند. این کتابخانه DOM را تحلیل میکند، لینکهایی را که در دید کاربر قرار دارند شناسایی میکند و بارگذاری منابع مرتبط (مانند تصاویر، اسکریپتها یا دادههای دیگر) را آغاز میکند و آنها را در کش ذخیره میکند تا دسترسی بعدی سریعتر شود. این ویژگی بهویژه برای بهینهسازی عملکرد صفحات وب مفید است، زیرا زمان بارگذاری هنگام کلیک روی لینکها را کاهش میدهد.
🔗https://getquick.link/
#️⃣#npm_module
👥@IR_javascript_group
🆔@IR_javascript
❤1
This media is not supported in your browser
VIEW IN TELEGRAM
و در گوشش، با زمزمهای جانکاه صحبت کرد ... .
◾️سالروز شهادت حضرت فاطمه زهرا (ص)
#️⃣#event
👥@IR_javascript_group
🆔@IR_javascript
◾️سالروز شهادت حضرت فاطمه زهرا (ص)
#️⃣#event
👥@IR_javascript_group
🆔@IR_javascript
❤5
qrframe
یک ابزار تولید QR کد مبتنی بر کد است که به شما امکان میدهد QR کدها را بهصورت برنامهنویسی شده ایجاد کنید.
🔗https://github.com/zhengkyl/qrframe
#️⃣#npm_module
👥@IR_javascript_group
🆔@IR_javascript
یک ابزار تولید QR کد مبتنی بر کد است که به شما امکان میدهد QR کدها را بهصورت برنامهنویسی شده ایجاد کنید.
🔗https://github.com/zhengkyl/qrframe
#️⃣#npm_module
👥@IR_javascript_group
🆔@IR_javascript
Intl.ListFormat — قالببندی لیست
«میداند» چگونه عناصر را بهدرستی با ویرگول، حرف ربط و/یا، کوتاهسازی پیوندها و غیره ترکیب کند، بسته به زبان و سبک مورد استفاده. استفاده از آن بسیار ساده است، اما آشنایی با گزینهها و «چالشهای پنهان» باعث میشود نتیجه نهایی تمیزتر و حرفهایتر باشد. 😁
✔️ آرایهای از مقادیر را به رشتهای قابل خواندن برای انسان تبدیل میکند و قوانین زبان را رعایت میکند (مثال: سیب، موز و پرتقال)؛
✔️ امکان انتخاب نوع (conjunction / disjunction / unit) و سبک (long / short / narrow) را فراهم میکند؛
✔️ متدهای format() (برای خروجی رشتهای)، formatToParts() (برای دریافت بخشهای ساختاریافته) و resolvedOptions() (برای مشاهده گزینههای اعمالشده واقعی) را ارائه میدهد.
#️⃣#tip
👥@IR_javascript_group
🆔@IR_javascript
«میداند» چگونه عناصر را بهدرستی با ویرگول، حرف ربط و/یا، کوتاهسازی پیوندها و غیره ترکیب کند، بسته به زبان و سبک مورد استفاده. استفاده از آن بسیار ساده است، اما آشنایی با گزینهها و «چالشهای پنهان» باعث میشود نتیجه نهایی تمیزتر و حرفهایتر باشد. 😁
✔️ آرایهای از مقادیر را به رشتهای قابل خواندن برای انسان تبدیل میکند و قوانین زبان را رعایت میکند (مثال: سیب، موز و پرتقال)؛
✔️ امکان انتخاب نوع (conjunction / disjunction / unit) و سبک (long / short / narrow) را فراهم میکند؛
✔️ متدهای format() (برای خروجی رشتهای)، formatToParts() (برای دریافت بخشهای ساختاریافته) و resolvedOptions() (برای مشاهده گزینههای اعمالشده واقعی) را ارائه میدهد.
const lf = new Intl.ListFormat('fa', { type: 'conjunction', style: 'long' });
lf.format(['سیب']);
// "سیب"
lf.format(['سیب', 'موز']);
// "سیب و موز"
lf.format(['سیب', 'موز', 'پرتقال']);
// "سیب، موز و پرتقال"
new Intl.ListFormat('fa', { type: 'disjunction' })
.format(['چای', 'قهوه', 'آبمیوه']);
// => "چای، قهوه یا آبمیوه"
new Intl.ListFormat('en', { style: 'short' })
.format(['A', 'B', 'C']);
// => "A, B & C" (در انگلیسی short ممکن است از '&' استفاده شود)
#️⃣#tip
👥@IR_javascript_group
🆔@IR_javascript
👍1
واقعیتی جالب: مغز انسان قادر نیست چیزی کاملاً نو از هیچ بیافریند؛ هر ایدهای در واقع ترکیبی از دانستهها و تجربیاتی است که پیشتر در ذهن وجود داشتهاند. در نتیجه، میزان خلاقیت ما بهطور مستقیم به کیفیت محتوایی که مصرف میکنیم وابسته است. اگر ورودی ذهن شما فقط شامل میمها و ویدیوهای کوتاه باشد، تبریک میگویم — تمام ایدههایتان هم بیارزش خواهند بود (طبق برخی پژوهشها، هرچند من منبعش را نمیدهم).
اما اگر خوراک ذهنیتان مثلاً کتابها و مقالات فنی باشد، مغز شما شروع میکند به تولید ایدههایی بیشتر و عمیقتر برای حل مسائل فنی در کد یا پروژههای واقعی.
پس باید اطلاعات باکیفیتتر مصرف کنیم و میمها و ویدیوهای تیکتاک را فقط زمانی ببینیم که میخواهیم استراحت کنیم. ساده به نظر میرسد، اما همیشه یک «اما» وجود دارد.
مغز ما نمیتواند بهطور همزمان اطلاعات را هم دریافت کند و هم پردازش نماید. این موضوع شبیه فرایند تغذیه است: وقتی غذا میخورید، باید چهار تا پنج ساعت به بدن فرصت بدهید تا غذا هضم شود؛ اگر بیوقفه بخورید، نتیجهاش تهوع یا اسهال است.
در مورد مغز هم همین است — پس از خواندن یک مقالهی فنی جالب، باید به مغز فرصت «هضم» اطلاعات را بدهید. برای این کار، نباید بلافاصله ذهن را با اطلاعات تازه پر کنید.
برای مثال، اگر بلافاصله بعد از خواندن یک مقاله بروید و ویدیوهای کوتاه ببینید، میمها مرور کنید یا خبر بخوانید، مغز شما اطلاعات آن مقاله را بازنویسی میکند و بسته به وضعیتش، یا کل مقاله را فراموش میکند یا بخش بزرگی از آن را.
چطور باید به مغز اجازهی هضم بدهیم؟
بسیار ساده است — فقط کافی است مدتی هیچکاری نکنید: به دیوار نگاه کنید، قدم بزنید، یا بخوابید.
اتفاقاً از همینجا میآید آن ترفند معروف دوران مدرسه: وقتی میخواستیم شعری را حفظ کنیم، شب در تخت مرورش میکردیم و بلافاصله میخوابیدیم — صبح که بیدار میشدیم، شعر را بهخوبی به خاطر داشتیم، چون مغز در خواب فرصت هضم و تثبیت اطلاعات را پیدا کرده بود.
#️⃣#discussion
👥@IR_javascript_group
🆔@IR_javascript
اما اگر خوراک ذهنیتان مثلاً کتابها و مقالات فنی باشد، مغز شما شروع میکند به تولید ایدههایی بیشتر و عمیقتر برای حل مسائل فنی در کد یا پروژههای واقعی.
پس باید اطلاعات باکیفیتتر مصرف کنیم و میمها و ویدیوهای تیکتاک را فقط زمانی ببینیم که میخواهیم استراحت کنیم. ساده به نظر میرسد، اما همیشه یک «اما» وجود دارد.
مغز ما نمیتواند بهطور همزمان اطلاعات را هم دریافت کند و هم پردازش نماید. این موضوع شبیه فرایند تغذیه است: وقتی غذا میخورید، باید چهار تا پنج ساعت به بدن فرصت بدهید تا غذا هضم شود؛ اگر بیوقفه بخورید، نتیجهاش تهوع یا اسهال است.
در مورد مغز هم همین است — پس از خواندن یک مقالهی فنی جالب، باید به مغز فرصت «هضم» اطلاعات را بدهید. برای این کار، نباید بلافاصله ذهن را با اطلاعات تازه پر کنید.
برای مثال، اگر بلافاصله بعد از خواندن یک مقاله بروید و ویدیوهای کوتاه ببینید، میمها مرور کنید یا خبر بخوانید، مغز شما اطلاعات آن مقاله را بازنویسی میکند و بسته به وضعیتش، یا کل مقاله را فراموش میکند یا بخش بزرگی از آن را.
چطور باید به مغز اجازهی هضم بدهیم؟
بسیار ساده است — فقط کافی است مدتی هیچکاری نکنید: به دیوار نگاه کنید، قدم بزنید، یا بخوابید.
اتفاقاً از همینجا میآید آن ترفند معروف دوران مدرسه: وقتی میخواستیم شعری را حفظ کنیم، شب در تخت مرورش میکردیم و بلافاصله میخوابیدیم — صبح که بیدار میشدیم، شعر را بهخوبی به خاطر داشتیم، چون مغز در خواب فرصت هضم و تثبیت اطلاعات را پیدا کرده بود.
#️⃣#discussion
👥@IR_javascript_group
🆔@IR_javascript
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
نکتهی CSS: از ارقام جدولی (tabular numbers) برای نمایش تایمرها استفاده کنید
ویژگی font-variant-numeric مشخص میکند که اعداد چگونه نمایش داده شوند. با تنظیم مقدار آن روی tabular-nums، تمام اعداد با پهنای یکسان نمایش داده میشوند، که باعث میشود کاملاً منظم و در یک خط قرار بگیرند.
#️⃣#tip #css
👥@IR_javascript_group
🆔@IR_javascript
ویژگی font-variant-numeric مشخص میکند که اعداد چگونه نمایش داده شوند. با تنظیم مقدار آن روی tabular-nums، تمام اعداد با پهنای یکسان نمایش داده میشوند، که باعث میشود کاملاً منظم و در یک خط قرار بگیرند.
#️⃣#tip #css
👥@IR_javascript_group
🆔@IR_javascript
🔥2👍1
شعاع حاشیه منفی
گاهی پیش میآید که طراحان بلوکهایی با بریدگیهای خاص طراحی میکنند که گوشههای آنها گرد و نرم است، مانند تصویری که در پیوست مشاهده میکنید. همین چند روز پیش از من پرسیدند چگونه میتوان چنین اثری را پیادهسازی کرد.
روشهای مختلفی برای این کار وجود دارد، از جمله ترفندهایی با استفاده از عناصر ماسک دارای موقعیت مطلق. در کل، پیادهسازی چنین بلوکهایی کار سادهای نیست. اما تیم HTML Academy راهحلی ارائه داده است — کتابخانهای به نام nebo.css (https://github.com/htmlacademy/nebo.css
).
Nebo مخفف negative border radius است، عبارتی که اغلب برای توصیف چنین افکتهایی به کار میرود. این کتابخانه یک فایل CSS با بیش از صد خط کد است که چند کلاس و مجموعهای از ویژگیهای سفارشی برای تنظیم دقیق در اختیار شما قرار میدهد.
#️⃣#tip #css
👥@IR_javascript_group
🆔@IR_javascript
گاهی پیش میآید که طراحان بلوکهایی با بریدگیهای خاص طراحی میکنند که گوشههای آنها گرد و نرم است، مانند تصویری که در پیوست مشاهده میکنید. همین چند روز پیش از من پرسیدند چگونه میتوان چنین اثری را پیادهسازی کرد.
روشهای مختلفی برای این کار وجود دارد، از جمله ترفندهایی با استفاده از عناصر ماسک دارای موقعیت مطلق. در کل، پیادهسازی چنین بلوکهایی کار سادهای نیست. اما تیم HTML Academy راهحلی ارائه داده است — کتابخانهای به نام nebo.css (https://github.com/htmlacademy/nebo.css
).
Nebo مخفف negative border radius است، عبارتی که اغلب برای توصیف چنین افکتهایی به کار میرود. این کتابخانه یک فایل CSS با بیش از صد خط کد است که چند کلاس و مجموعهای از ویژگیهای سفارشی برای تنظیم دقیق در اختیار شما قرار میدهد.
#️⃣#tip #css
👥@IR_javascript_group
🆔@IR_javascript