Herhangi bir web sayfasına CSS ve JavaScript inject eden, domain bazlı profil yöneten bir Chrome eklentisi.
chrome://extensions sayfasını açchrome-dev-override klasörünü seçCtrl+Shift+Y| Kavram | Açıklama |
|---|---|
| Profil | Her domain için ayrı tutulan CSS/JS/ayarlar seti |
| Snippet | Bir profil içindeki bağımsız kod bloğu (birden fazla olabilir) |
| Auto-inject | Sayfa yüklendiğinde otomatik inject |
| Live Reload | Kod kaydedildiğinde açık sekmelere anında re-inject |
Nasıl yapılır:
Notlar:
chrome.scripting API ile yapılır — sayfanın CSP kurallarını bypass ederrequire-trusted-types-for 'script' olan sayfalar da desteklenir (TrustedScript policy kullanılır)Bir profilde birden fazla bağımsız kod bloğu (snippet) tanımlanabilir.
Snippet oluşturma:
Snippet sıralama:
Snippet enable/disable:
✗ prefix’iyle gri gösterilir, inject’e dahil edilmezDelay (gecikme):
Snippet 1: 0s → Snippet 2: 2s → Snippet 3: 5s şeklinde kademeli çalışmaDomain’in tüm URL’leri yerine belirli sayfalarda inject etmek için.
Örnekler:
| Pattern | Eşleşir | Eşleşmez |
|---|---|---|
*example.com/admin* |
example.com/admin/users |
example.com/home |
*checkout* |
.../checkout/confirm |
.../cart |
| (boş) | Tüm URL’ler | — |
Sözdizimi: * herhangi bir karakter dizisi, ? tek karakter, boş = hepsi
Sayfadan element seçip CSS seçicisini editöre ekle.
Kullanım:
selector { } bloğu CSS editörünün sonuna eklenirdocument.querySelector('...') JS editörünün sonuna eklenir$('...') ile JS editörüne eklenir (jQuery aktifse)CSS seçici önceliği:
id varsa → #idtag.class1.class2:nth-of-type(n) (max 3 seviye derinlik)window.jQuery tanımlıysa aktif edilebilir(function($, jQuery){ ... })(window.jQuery, window.jQuery) sarması içinde çalışır$ noConflict durumundan bağımsız olarak her zaman erişilebilirSettings → Live Reload toggle aktifken: profil kaydedildiğinde o domain’in açık tüm sekmeleri otomatik re-inject edilir.
Son 50 inject olayı kaydedilir (domain, URL, tarih, başarı/hata).
Erişim: Ana ekran → History butonu → Clear ile temizle
Settings → Sync Across Devices toggle ile profilleri Chrome hesabı üzerinden diğer cihazlara sync et.
Akış:
chrome.storage.sync‘e yüklenirupdatedAt timestamp büyük olan kazanırSınırlamalar:
Settings → Export All → JSON dosyası indir Settings → Import Profiles → JSON dosyası seç → profiller merge edilir
Header’daki ☀️/🌙 veya Settings → Light Theme toggle ile dark/light tema geçişi.
chrome-dev-override/
├── manifest.json # MV3 manifest
├── background/
│ └── background.js # Service worker: inject, sync listener, live reload
├── content/
│ └── content.js # Element picker, toast göstergesi
├── popup/
│ ├── popup.html
│ ├── popup.css
│ └── popup.js # Ana UI mantığı
└── lib/
├── storage.js # Chrome storage abstraction + sync metodları
├── jquery.min.js
└── codemirror/ # Kod editörü kütüphanesi
| Key | Depolama | İçerik |
|---|---|---|
profiles |
local |
Tüm domain profilleri |
settings |
local |
Global ayarlar (tema, liveReload, syncEnabled…) |
injectHistory |
local |
Son 50 inject olayı |
pendingPickedElement |
local |
Picker’dan gelen geçici seçici |
sp_{domain} |
sync |
Sync edilen profiller (sp_ prefix’i) |
{
"enabled": true,
"css": "",
"js": "",
"autoInject": false,
"useJQuery": false,
"urlPattern": "",
"delay": 0,
"snippets": [
{
"id": 1700000000000,
"name": "Snippet 1",
"css": ".example { color: red; }",
"js": "console.log('hello')",
"delay": 0,
"enabled": true
}
],
"createdAt": 1700000000000,
"updatedAt": 1700000000000
}
| İzin | Neden |
|---|---|
scripting |
CSS/JS inject (executeScript) |
activeTab |
Aktif sekme bilgisi |
tabs |
Tab sorgulama ve yenileme |
storage |
Profil ve ayar saklama + sync |
webNavigation |
SPA route değişimlerini yakalama |
<all_urls> |
Tüm sayfalara inject yetkisi |
| Kısayol | Eylem |
|---|---|
Ctrl+Shift+Y |
Popup’ı aç |
Esc |
Element picker’ı iptal et |
Inject çalışmıyor:
chrome:// sayfalarına inject yapılamazJS hatası:
[Dev Override] prefix’li mesaja bakjQuery çalışmıyor:
window.jQuery olan sayfalarda aktif olur — yoksa plain JS yazSync çalışmıyor: