Açıklama
Denetlenen pencereyle etkileşim kurmak için chrome.devtools.inspectedWindow
API'sini kullanın: İncelenen sayfanın sekme kimliğini alın, kodu denetlenen pencere bağlamında değerlendirin, sayfayı yeniden yükleyin veya sayfadaki kaynakların listesini alın.
Manifest
Bu API'yi kullanmak için aşağıdaki anahtarların manifest dosyasında beyan edilmesi gerekir.
"devtools_page"
İncelenen pencereyle etkileşim kurmak için chrome.devtools.inspectedWindow
işlevini kullanın: için sekme kimliğini alın
sayfayı yeniden yükleyin, kodu denetlenen pencere bağlamında değerlendirin, sayfayı yeniden yükleyin veya
sayfadaki kaynakların listesini içerir.
Geliştirici Araçları API'lerinin kullanımıyla ilgili genel bilgiler için Geliştirici Araçları API'leri özeti sayfasına bakın.
Genel Bakış
tabId
özelliği, chrome.tabs.*
ile kullanabileceğiniz sekme tanımlayıcısını sağlar
API çağrıları. Ancak chrome.tabs.*
API'nin Geliştirici Araçları'na açık olmadığını lütfen unutmayın
uzantı sayfalarını güvenlikle ilgili nedenlerden dolayı kullanıyorsanız, sekme kimliğini arka plana iletmeniz gerekir.
sayfasını açar ve chrome.tabs.*
API işlevlerini buradan çağırır.
İncelenen sayfayı yeniden yüklemek için reload
yöntemi kullanılabilir. Buna ek olarak, arayan
kullanıcı aracısı dizesi için bir geçersiz kılma, sayfa yüklendikten hemen sonra eklenecek bir komut dosyası veya
önbelleğe alınan kaynakların yeniden yüklenmesini zorunlu kılma seçeneği sunulur.
Kaynakların listesini almak için getResources
çağrısını ve onResourceContent
etkinliğini kullanın
(dokümanlar, stil sayfaları, komut dosyaları, resimler vb.) kontrol edin. getContent
ve
Resource
sınıfının setContent
yöntemi ve onResourceContentCommitted
etkinliği
kaynak içeriğinin değiştirilmesini desteklemek için (örneğin, harici bir düzenleyici tarafından) kullanılmalıdır.
İncelenen Pencerede Kod Yürütme
eval
yöntemi, uzantıların şu bağlamda JavaScript kodunu yürütmesini sağlar:
incelenmiş sayfaya gider. Bu yöntem doğru bağlamda kullanıldığında etkilidir, kullanıldığında tehlikelidir
uygunsuz bir şekilde. Belirli bir işleve ihtiyaç duymuyorsanız tabs.executeScript
yöntemini kullanın
eval
yönteminin sağladığı faydalar.
eval
ve tabs.executeScript
yöntemleri arasındaki temel farklar şunlardır:
eval
yöntemi, değerlendirilmekte olan kod için izole bir dünya kullanmaz. Bu nedenle, JavaScript incelenen pencerenin durumuna kod tarafından erişilebilir. Şuna erişirken bu yöntemi kullanın: İncelenen sayfanın JavaScript durumu gereklidir.- Değerlendirilen kodun yürütme bağlamı, Developer Tools Console API'yi içerir.
Örneğin, kod
inspect
ve$0
kullanabilir. - Değerlendirilen kod, uzantı geri çağırmasına iletilen bir değer döndürebilir. Döndürülen değer geçerli bir JSON nesnesi olmalıdır (yalnızca temel JavaScript türleri ve çevrimsel referansları için de kullanabilirsiniz. Alınan verileri işlerken lütfen çok dikkatli olun denetlenen sayfadan alınır. Yürütme bağlamı esasen incelenen sayfa tarafından kontrol edilir. CANNOT TRANSLATE Kötü amaçlı sayfa, uzantıya döndürülen verileri etkileyebilir.
Bir sayfanın birden fazla farklı JavaScript yürütme bağlamı içerebileceğini unutmayın. Her karenin kendi ve ilgili bağlamda çalışan içerik komut dosyalarına sahip her uzantı için ek bir bağlam çerçeve.
Varsayılan olarak eval
yöntemi, incelenen sayfanın ana çerçevesi bağlamında yürütülür.
eval
yöntemi,
ve kod değerlendirilir. Bu options nesnesi, aşağıdaki anahtarlardan birini veya daha fazlasını içerebilir:
frameURL
- İncelenen sayfanın ana çerçevesi dışında bir çerçeve belirtmek için kullanın.
contextSecurityOrigin
- Belirtilen çerçevenin içinde, web kaynağına göre bağlam seçmek için kullanın.
useContentScriptContext
- True (doğru) ise komut dosyasını, uzantının içerik komut dosyalarıyla aynı bağlamda yürütün. ( bağlam güvenlik kaynağı olarak uzantının kendi web kuruluşunu belirtin.) Bu, içerik komut dosyasıyla veri alışverişi yapabilirsiniz.
Örnekler
Aşağıdaki kod, denetlenen sayfa tarafından kullanılan jQuery sürümünü kontrol eder:
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);
}
}
);
Bu API'yi denemek için chrome-extension-samples örneklerinden chrome-extension-samples yükleyin depodur.
Türler
Resource
İncelenen sayfadaki bir kaynak (ör. belge, komut dosyası veya resim).
Özellikler
-
url
dize
Kaynağın URL'si.
-
getContent
geçersiz
Kaynağın içeriğini alır.
getContent
işlevi aşağıdaki gibi görünür:(callback: function) => {...}
-
geri çağırma
işlev
callback
parametresi şu şekilde görünür:(content: string, encoding: string) => void
-
içerik
dize
Kaynağın içeriği (potansiyel olarak kodlanmış).
-
kodlama
dize
İçerik kodlanmamışsa boş, aksi takdirde kodlama adı değerini alır. Şu anda yalnızca base64 desteklenmektedir.
-
-
-
setContent
geçersiz
Kaynağın içeriğini ayarlar.
setContent
işlevi aşağıdaki gibi görünür:(content: string, commit: boolean, callback?: function) => {...}
-
içerik
dize
Kaynağın yeni içeriği. Şu anda yalnızca metin türüne sahip kaynaklar desteklenmektedir.
-
commit
boolean
Kullanıcı kaynağı düzenlemeyi bitirdiyse ve kaynağın yeni içeriğinin devam etmesi gerekiyorsa doğru değerini döndürür; Bu, kullanıcının kaynağı düzenleme sürecinde gönderilen küçük bir değişiklikse false (yanlış) değerini alır.
-
geri çağırma
işlev isteğe bağlı
callback
parametresi şu şekilde görünür:(error?: object) => void
-
hata
nesne isteğe bağlı
Kaynak içeriği başarıyla ayarlanmışsa bu ayar tanımsızdır; şeklinde tanımlar.
-
-
Özellikler
tabId
İncelenen sekmenin kimliği. Bu kimlik chrome.tabs ile kullanılabilir.* API'ye gidin.
Tür
sayı
Yöntemler
eval()
chrome.devtools.inspectedWindow.eval(
expression: string,
options?: object,
callback?: function,
)
Bir JavaScript ifadesini, incelenen sayfanın ana çerçevesi bağlamında değerlendirir. İfade, JSON uyumlu bir nesne olarak değerlendirilmelidir, aksi takdirde bir istisna oluşur. Değerlendirme işlevi, değerlendirme sırasında Geliştirici Araçları tarafı hatası veya JavaScript istisnasıyla ilgili bildirimde bulunabilir. Her iki durumda da geri çağırmanın result
parametresi undefined
olur. Geliştirici Araçları tarafında bir hata olması durumunda, isException
parametresi boş değerli değildir. isError
değeri doğru, code
parametresi ise bir hata koduna ayarlanmıştır. JavaScript hatası olması durumunda isException
doğru, value
ise atanan nesnenin dize değerine ayarlanır.
Parametreler
-
ifade
dize
Değerlendirilecek bir ifade.
-
seçenekler
nesne isteğe bağlı
Seçenekler parametresi bir veya daha fazla seçenek içerebilir.
-
frameURL
dize isteğe bağlı
Belirtilirse ifade, URL'si belirtilenle eşleşen iframe'de değerlendirilir. Varsayılan olarak ifade, incelenen sayfanın üst çerçevesinde değerlendirilir.
-
scriptExecutionContext
dize isteğe bağlı
Chrome 107 ve sonraki sürümler 'nı inceleyin.İfadeyi, belirtilen kaynakla eşleşen bir uzantının içerik komut dosyası bağlamında değerlendirin. Belirtilirse, scriptExecutionContext "true" değerini geçersiz kılar useContentScriptContext'ine ilişkin bir ayardır.
-
useContentScriptContext
boole isteğe bağlı
İçerik komut dosyasının denetlenen sayfaya zaten yerleştirilmiş olması koşuluyla, ifadeyi arama uzantısının içerik komut dosyası bağlamında değerlendirin. Aksi takdirde, ifade değerlendirilmez ve geri çağırma, istisna parametresi
isError
alanı doğru,code
alanı daE_NOTFOUND
olarak ayarlanmış bir nesneye ayarlanarak çağrılır.
-
-
geri çağırma
işlev isteğe bağlı
callback
parametresi şu şekilde görünür:(result: object, exceptionInfo: object) => void
-
sonuç
nesne
Değerlendirmenin sonucu.
-
exceptionInfo
nesne
İfade değerlendirilirken bir istisna oluştuysa ayrıntıları sağlayan bir nesne.
-
kod
dize
Hatanın, ifade değerlendirilmeden önce Geliştirici Araçları tarafında oluşup oluşmadığını ayarlayın.
-
açıklama
dize
Hatanın, ifade değerlendirilmeden önce Geliştirici Araçları tarafında oluşup oluşmadığını ayarlayın.
-
ayrıntılar
herhangi biri[]
Hatanın, ifade değerlendirilmeden önce Geliştirici Araçları tarafında oluşup oluşmadığını belirtin. Bu değer, hatanın nedeni hakkında daha fazla bilgi sağlamak için açıklama dizesinde değiştirilebilecek değer dizisini içerir.
-
isError
boolean
Hatanın, ifade değerlendirilmeden önce Geliştirici Araçları tarafında oluşup oluşmadığını ayarlayın.
-
isException
boolean
Değerlendirilen kod işlenmemiş bir istisna oluşturursa ayarlayın.
-
value
dize
Değerlendirilen kod işlenmemiş bir istisna oluşturursa ayarlayın.
-
-
getResources()
chrome.devtools.inspectedWindow.getResources(
callback: function,
)
İncelenen sayfadan kaynakların listesini alır.
Parametreler
reload()
chrome.devtools.inspectedWindow.reload(
reloadOptions?: object,
)
İncelenen sayfayı yeniden yükler.
Parametreler
-
reloadOptions
nesne isteğe bağlı
-
ignoreCache
boole isteğe bağlı
Doğru değerine ayarlanırsa yükleyici,
load
etkinliği tetiklenmeden önce yüklenen tüm incelenmiş sayfa kaynakları için önbelleği atlar. Bu efekt, denetlenen pencerede veya Geliştirici Araçları penceresinde Ctrl+Üst Karakter+R tuşlarına basmaya benzer. -
injectedScript
dize isteğe bağlı
Belirtilirse komut dosyası, denetlenen sayfanın her karesine yüklemenin hemen ardından, çerçevenin herhangi bir komut dosyasından önce yerleştirilir. Komut dosyası, örneğin kullanıcı Ctrl+R tuşlarına bastığında sonraki yeniden yüklemelerden sonra eklenmez.
-
userAgent
dize isteğe bağlı
Belirtilirse dize, incelenen sayfanın kaynakları yüklenirken gönderilen
User-Agent
HTTP üst bilgisinin değerini geçersiz kılar. Dize, incelenen sayfada çalışan komut dosyalarına döndürülennavigator.userAgent
özelliğinin değerini de geçersiz kılar.
-
Etkinlikler
onResourceAdded
chrome.devtools.inspectedWindow.onResourceAdded.addListener(
callback: function,
)
İncelenen sayfaya yeni bir kaynak eklendiğinde tetiklenir.
Parametreler
-
geri çağırma
işlev
callback
parametresi şu şekilde görünür:(resource: Resource) => void
-
kaynak
-
onResourceContentCommitted
chrome.devtools.inspectedWindow.onResourceContentCommitted.addListener(
callback: function,
)
Kaynağın yeni bir düzeltmesi yapıldığında (ör. kullanıcı, Geliştirici Araçları'nda kaynağın düzenlenmiş bir sürümünü kaydettiğinde) tetiklenir.