2012-02-19 9 views
5

Ho un codice qui che non vuole funzionare come estensione Chrome.Perché l'estensione Google Chrome apre solo 25 schede tra molte altre?

Per quanto posso dire, tutto funziona perfettamente, tranne che smette di aprire le pagine attorno alla scheda 25, non importa quante schede devono essere aperte. Ho controllato il codice e tenta di aprire correttamente ogni singolo link, ma in realtà non lo è. Qualche idea?

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

Dovrai abbatterlo un po 'di più. Il ciclo iniziale '.each()' viene chiamato il numero appropriato di volte? Dove è in particolare il tuo codice in mancanza? Il valore di 'openedTabs' è sempre come previsto, il numero completo? Se veramente fallisce su 'window.open()' Sospetto che tu stia colpendo una sorta di limite di sicurezza imposto da Chrome. – Brad

+0

Il ciclo '.each' iniziale viene chiamato una sola volta, attivando per ogni url sull'intera pagina che trova. Il valore di 'openTabs' è sempre corretto. E non conosco alcun limite di sicurezza, ma mi piacerebbe davvero aggirarlo, haha ​​ – Wyko

+0

Scusate, intendevo quante volte è in esecuzione il codice all'interno di quel ciclo, ma se 'openedTabs' è corretto, questo risponde alla domanda . Solo per i calci, se hai un ciclo davvero semplice che non fa altro che aprire 50 finestre, si ferma a 23 o così? È sempre 23? Hai provato a mettere un 'sonno' lì dentro? – Brad

risposta

0

Probabilmente qualcosa a che fare con un blocco popup o ciò che ha detto Brad.
la sua abbastanza facile da affrontare tho, basta utilizzare l'API di schede ....

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

... 55 piccole schede;)

3

C'è un intentional upper bound di 25 sul window.open chiamate. Vedi bug di Chromi 2632 e 3382 per lo sfondo, ma in breve, l'idea è di impedire attacchi denial-of-service (sia UI-saggio che di memoria) da pagine che aprono i popup a tempo indeterminato.

API di estensione come chrome.tabs.create (come suggerisce la risposta di PAEz) non sono soggette a queste API, poiché le estensioni sono già accesso privilegiato.

Problemi correlati