2011-11-17 5 views
7

Mam iframe w moim rozszerzeniu chrome, że ładuje strony internetowej, chciałbym wstrzyknąć CSS i JavaScript do witryny, ale tylko wtedy, gdy jest załadowany w moim rozszerzenia iframe (więc nie wpływają na to, gdy użytkownik przegląda witrynę w normalny sposób).Jak wtryskać CSS i JavaScript do iframe załadowanego w rozszerzeniu chrome

Byłem zaskoczony, że rozszerzenia Chrome mają zasady zabezpieczeń międzydomenowych zastosowane do nich, gdy próbują uzyskać dostęp do elementów iframe, nawet jeśli mogą wysyłać żądania XHR między domenami.

Czy istnieje prosty sposób na zrobienie tego? Chociaż mógłbym to zrobić za pomocą executeScript, ale wymaga to identyfikatora tab.

Odpowiedz

2

Jedynym sposobem, aby dowiedzieć się, czy jesteś w ifrmae jest window nie jest top.

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

Można to zrobić tylko dla skryptów treści, a nie dla arkuszy stylów. Zwykle robię to w skrypcie treści, sprawdzam, czy nie ma go w górnym oknie, a następnie kontynuuję skrypt, w przeciwnym razie kończę.

Podsumowanie

  1. wstrzyknąć Script Content dla tego adresu URL
  2. w skrypcie zawartości, sprawdź czy właściwość okna, if (window != top) { loadContentScript() }
  3. Tworzenie CSS w JavaScripcie, jeśli jesteś zbyt zaniepokojeni to wpływa. Nie powinieneś jednak używać unikalnych identyfikatorów.

Mam nadzieję, że pomogłem, robię to przez kilka moich rozszerzeń.

Powiązane problemy