chrome.devtools.inspectedWindow

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.
ziyaret edin.

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ı da E_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

  • geri çağırma

    işlev

    callback parametresi şu şekilde görünür:

    (resources: Resource[]) => void

    • şu adreste bulabilirsiniz:

      Sayfadaki kaynaklar.

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ülen navigator.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

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.

Parametreler

  • geri çağırma

    işlev

    callback parametresi şu şekilde görünür:

    (resource: Resource, content: string) => void