2011-11-17 22 views
7

Bir web sitesi yükleyen chrome uzantımda iframe var, CSS ve Javascript'i web sitesine yerleştirmek istiyorum ancak yalnızca iframe uzantıları (kullanıcı siteye normal bir şekilde göz attığı zaman etkilenmez).CSS ve Javascript'i bir krom uzantısına yüklenen bir iframe içine nasıl enjekte edebilirim

Chrome uzantılarının, etki alanları arası XHR istekleri yapabilmelerine rağmen iframe içeriğine erişmeye çalışırken kendilerine uygulanan alanlar arası güvenlik ilkelerine sahip olmalarına şaşırdım.

Bunu yapmanın kolay bir yolu var mı? Ben executeScript kullanarak bunu yapmak mümkün olabilir ama bir sekme kimliği gerektirir.

cevap

2

Bir ifrma içinde olup olmadığınızı bilmenin tek yolu windowtop değil.

if (window == top) { 
    // Not in iframe 
} 
else { 
    // In an iframe 
} 

Bunu, stil sayfaları için değil, içerik komut dosyaları için de yapabilirsiniz. Genelde yaptığım içerik komut dosyasında, üst pencerede olmadığını kontrol edip komut dosyasına devam ediyorum, yoksa sadece son veriyorum.

Özeti

  1. hakkında çok endişe duyuyorsanız
  2. if (window != top) { loadContentScript() } JavaScript CSS oluşturma, pencere özelliği olmadığını kontrol İçerik komut olarak o URL
  3. için İçerik Komut enjekte etkiliyor. Benzersiz kimlikler kullanmamalısınız.

Bu yardımcı olacağını umuyorum, bunu birkaç uzantı için yapıyorum.

İlgili konular