Açıklama
İncelenen pencereyle etkileşimde bulunmak için chrome.devtools.inspectedWindow
API'sını kullanın: İncelenen sayfanın sekme kimliğini edinin, kodu denetlenen pencere bağlamında değerlendirin, sayfayı yeniden yükleyin veya sayfadaki kaynakların listesini edinin.
Geliştirici Araçları API'lerinin kullanımına genel bir giriş için DevTools API'leri özetine bakın.
tabId
özelliği, chrome.tabs.*
API çağrılarıyla kullanabileceğiniz sekme tanımlayıcısını sağlar. Bununla birlikte, chrome.tabs.*
API'nin güvenlikle ilgili nedenlerden dolayı Geliştirici Araçları uzantı sayfalarında görünmediğini lütfen unutmayın. Sekme kimliğini arka plan sayfasına iletmeniz ve chrome.tabs.*
API işlevlerini buradan çağırmanız gerekir.
reload
yöntemi, incelenen sayfayı yeniden yüklemek için kullanılabilir. Buna ek olarak çağrıyı yapan, kullanıcı aracısı dizesi için geçersiz kılma, sayfa yüklendikten hemen sonra eklenecek bir komut dosyası veya önbelleğe alınmış kaynakların yeniden yüklenmesini zorunlu kılma seçeneği de belirtebilir.
İncelenen sayfa içindeki kaynakların (dokümanlar, stil sayfaları, komut dosyaları, resimler vb.) listesini almak için getResources
çağrısını ve onResourceContent
etkinliğini kullanın. Resource
sınıfının onResourceContentCommitted
etkinliğiyle birlikte getContent
ve setContent
yöntemleri, örneğin harici bir düzenleyici tarafından kaynak içeriğinde değişiklik yapılmasını desteklemek için kullanılabilir.
Manifest
İncelenen pencerede kodu yürüt
eval
yöntemi, uzantıların denetlenen sayfa bağlamında JavaScript kodunu yürütmesine imkan tanır. Bu yöntem doğru bağlamda kullanıldığında etkilidir, uygunsuz şekilde kullanıldığında tehlikelidir. eval
yönteminin sağladığı belirli bir işleve ihtiyacınız yoksa tabs.executeScript
yöntemini kullanın.
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 yüzden, incelenen pencerenin JavaScript durumuna kod, erişebilir. İncelenen sayfanın JavaScript durumuna erişim gerektiğinde bu yöntemi kullanın.- Değerlendirilmekte olan kodun yürütme bağlamı Geliştirici Araçları konsolu API'sini içerir.
Örneğin, kodda
inspect
ve$0
kullanılabilir. - Değerlendirilen kod uzantı geri çağırmaya geçirilen 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 diğer JSON nesnelerine döngüsel referanslar içerebilir). İncelenen sayfadan alınan verileri işlerken lütfen daha dikkatli olun. Yürütme bağlamı temelde denetlenen sayfa tarafından kontrol edilir. Kötü amaçlı bir sayfa, uzantıya döndürülen verileri etkileyebilir.
Bir sayfanın birden çok farklı JavaScript yürütme bağlamı içerebileceğini unutmayın. Her çerçeve kendi bağlamına ve ayrıca o çerçevede çalışan içerik komut dosyalarına sahip her uzantı için ek bağlam sunar.
Varsayılan olarak eval
yöntemi, denetlenen sayfanın ana çerçevesi bağlamında yürütülür.
eval
yöntemi, kodun değerlendirildiği bağlamı belirtmek için kullanabileceğiniz isteğe bağlı ikinci bir bağımsız değişkeni alır. 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
- Web kaynağına göre, belirtilen çerçevedeki bir bağlamı seçmek için kullanın.
useContentScriptContext
- True (doğru) değerine ayarlanırsa komut dosyasını, uzantının içerik komut dosyalarıyla aynı bağlamda yürütün. (Bağlam güvenliği kaynağı olarak uzantının kendi web sitesini belirtmeye eşdeğerdir.) Bu, içerik komut dosyasıyla veri alışverişi yapmak için kullanılabilir.
Ö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 deposundan devtools API örneklerini yükleyin.
Türler
Resource
İncelenen sayfada bulunan bir doküman, komut dosyası veya resim gibi bir kaynak.
Özellikler
-
url
dize
Kaynağın URL'si.
-
getContent
void
Kaynağın içeriğini alır.
getContent
işlevi şu şekilde görünür:(callback: function) => {...}
-
geri çağırma
işlev
callback
parametresi şu şekilde görünür:(content: string, encoding: string) => void
-
sayısını artırmak istiyoruz
dize
Kaynağın içeriği (potansiyel olarak kodlanmış).
-
kodlama
dize
İçerik kodlanmamışsa boş, aksi takdirde kodlama adı boş olur. Şu anda yalnızca base64 desteklenmektedir.
-
-
-
setContent
void
Kaynağın içeriğini ayarlar.
setContent
işlevi şu şekilde görünür:(content: string, commit: boolean, callback?: function) => {...}
-
sayısını artırmak istiyoruz
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 tamamlamışsa ve kaynağın yeni içeriğinin korunması gerekiyorsa true (doğru), kullanıcının kaynağı düzenleme işlemi devam ederken gönderilen küçük bir değişiklikse false (yanlış) değerini alır.
-
geri çağırma
Functions (isteğe bağlı)
callback
parametresi şu şekilde görünür:(error?: object) => void
-
hata
isteğe bağlı
Kaynak içeriği başarıyla ayarlanmışsa tanımsız değerine ayarlanır; aksi takdirde hatayı açıklar.
-
-
Özellikler
tabId
İncelenmekte olan sekmenin kimliği. Bu kimlik chrome.tabs ile kullanılabilir.* API.
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 istisna oluşur. Değerlendirme işlevi, Geliştirme Araçları tarafındaki bir hatayı veya değerlendirme sırasında ortaya çıkan bir JavaScript istisnasını bildirebilir. Her iki durumda da geri çağırmanın result
parametresi undefined
olur. Geliştirici Araçları tarafında bir hata oluşması durumunda, isException
parametresi boş değildir ve isError
doğru, code
parametresi bir hata koduna ayarlanmıştır. JavaScript hatası olması durumunda isException
doğru olarak, value
değeri ise atılan nesnenin dize değerine ayarlanır.
Parametreler
-
ifade
dize
Değerlendirilecek ifade.
-
seçenekler
isteğe bağlı
Seçenekler parametresi bir veya daha fazla seçenek içerebilir.
-
frameURL
string 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
string isteğe bağlı
Chrome 107 ve sonraki sürümlerİfadeyi, belirtilen kaynakla eşleşen bir uzantının içerik komut dosyası bağlamında değerlendirin. Bu değer verilirsescriptExecutionContext, useContentScriptContext'te "true" ayarını geçersiz kılar.
-
useContentScriptContext
boole isteğe bağlı
İçerik komut dosyasının denetlenen sayfaya önceden eklenmiş olması şartıyla, ifadeyi, çağrı yapan uzantının içerik komut dosyası bağlamında değerlendirin. Aksi takdirde, ifade değerlendirilmez ve geri çağırma, istisna parametresi
isError
alanı true (doğru) vecode
alanıE_NOTFOUND
olarak ayarlanmış bir nesneye ayarlanmış olarak çağrılır.
-
-
geri çağırma
Functions (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 istisna oluşursa ayrıntıları sağlayan nesne.
-
kod
dize
Hata, ifade değerlendirilmeden önce Geliştirici Araçları tarafında oluşup oluşmadığını ayarlayın.
-
açıklama
dize
Hata, ifade değerlendirilmeden önce Geliştirici Araçları tarafında oluşup oluşmadığını ayarlayın.
-
ayrıntılar
herhangi biri[]
Hata, ifade değerlendirilmeden önce Geliştirici Araçları tarafında oluşmuşsa hatanın nedeni hakkında daha fazla bilgi sağlamak için açıklama dizesine eklenebilecek değer dizisini içerir.
-
isError
boolean
Hata, 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 ayarlanır.
-
value
dize
Değerlendirilen kod işlenmemiş bir istisna oluşturursa ayarlanır.
-
-
getResources()
chrome.devtools.inspectedWindow.getResources(
callback: function,
)
İncelenen sayfadan kaynak listesini alır.
Parametreler
reload()
chrome.devtools.inspectedWindow.reload(
reloadOptions?: object,
)
İncelenen sayfayı yeniden yükler.
Parametreler
-
reloadOptions
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, incelenen tüm sayfa kaynakları için önbelleği atlar. İşlem, denetlenen pencerede veya Geliştirici Araçları penceresinde Ctrl+Üst Karakter+R tuşlarına basmaya benzer. -
injectedScript
string isteğe bağlı
Belirtilirse komut dosyası, denetlenen sayfanın her çerçevesine yüklenir yüklenmez çerçevenin komut dosyalarından önce eklenir. Komut dosyası, sonraki yeniden yükleme işlemlerinden sonra (örneğin, kullanıcı Ctrl+R tuşlarına bastığında) yerleştirilmez.
-
userAgent
string isteğe bağlı
Bu dize belirtilirse denetlenen 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 tetiklenir (ör. kullanıcı, Geliştirici Araçları'nda kaynağın düzenlenmiş bir sürümünü kaydeder).