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.
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.
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.
Manifest
Bu API'yi kullanmak için aşağıdaki anahtarların manifest dosyasında beyan edilmesi gerekir.
"devtools_page"İncelenen pencerede kodu yürüt
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:
evalyö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
inspectve$0kullanabilir. - 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.
getContentişlevi aşağıdaki gibi görünür:(callback: function) => {...}
-
geri çağırma
işlev
callbackparametresi ş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.
setContentiş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ı
callbackparametresi ş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,
): void
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
isErroralanı doğru,codealanı daE_NOTFOUNDolarak ayarlanmış bir nesneye ayarlanarak çağrılır.
-
-
geri çağırma
işlev isteğe bağlı
callbackparametresi ş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,
): void
İncelenen sayfadan kaynakların listesini alır.
Parametreler
reload()
chrome.devtools.inspectedWindow.reload(
reloadOptions?: object,
): void
İ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,
loadetkinliğ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-AgentHTTP ü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
callbackparametresi ş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.