2012-02-19 7 views
5

Mam tutaj fragment kodu, który nie chce działać poprawnie jako rozszerzenie do Chrome.Dlaczego moje rozszerzenie Google Chrome otwiera tylko 25 kart z wielu innych?

O ile mi wiadomo, wszystko działa idealnie, z tym wyjątkiem, że przestaje otwierać strony wokół zakładki 25, bez względu na to, ile zakładek należy otworzyć. Sprawdziłem kod i próbuję poprawnie otworzyć każdy link, ale w rzeczywistości tak nie jest. Jakieś pomysły?

for (x = 0; x<55; x++){ 
    window.open(); 
} 
+1

Będziesz musiał trochę tego zepsuć. Czy początkowa pętla '.each()' zostaje wywołana odpowiednią liczbę razy? Gdzie konkretnie nie działa twój kod? Czy wartość 'openedTabs' jest zawsze taka, jakiej oczekiwano, pełna liczba? Jeśli naprawdę zawiedzie w 'window.open()' Podejrzewam, że uderzasz w jakieś ograniczenia bezpieczeństwa/bezpieczeństwa narzucone przez Chrome. – Brad

+0

Początkowa pętla ".each" jest wywoływana tylko raz, aktywując dla każdego adresu URL na całej znalezionej stronie. Wartość "openedTabs" jest zawsze poprawna. I nie znam żadnego ograniczenia bezpieczeństwa, ale naprawdę chciałbym to obejść, haha ​​ – Wyko

+0

Przepraszam, miałem na myśli, ile razy kod w tej pętli działał, ale jeśli 'openedTabs' jest poprawny, to odpowiada na pytanie . Tylko dla kopnięć, jeśli masz naprawdę prostą pętlę, która nie robi nic oprócz otwierania 50 okien, zatrzymuje się na 23 lub mniej? Czy to zawsze 23? Czy próbowałeś włożyć w to miejsce "spać"? – Brad

Odpowiedz

0

Prawdopodobnie ma coś wspólnego z blokadą wyskakujących okienek lub z tym, co powiedział Brad.
Jego dość łatwe do czynienia z Tho, wystarczy użyć API zakładki ....

for (x = 0; x<55; x++){ 
    chrome.tabs.create({url:"nowhere"+x}); 
} 

... 55 małe wypustki;)

3

Jest intentional upper bound 25 na window.open połączeń. Zobacz Chromium plusy 2632 i 3382 dla tła, ale w skrócie, chodzi o to, aby zapobiec atakom typu "odmowa usługi" (zarówno z punktu widzenia interfejsu użytkownika, jak i pamięci) od stron, które w nieskończoność otwierają wyskakujące okienka.

Rozszerzenia API takie jak chrome.tabs.create (jak sugeruje PAEz) nie podlegają tym API, ponieważ rozszerzenia są już uprzywilejowanym dostępem.