2012-02-19 11 views
5

Tengo un código aquí que simplemente no quiere funcionar bien como una extensión de Chrome.¿Por qué mi extensión de Google Chrome solo abre 25 pestañas de muchas más?

Por lo que yo sé, todo funciona perfectamente, excepto que deja de abrir páginas alrededor de la pestaña 25, sin importar cuántas pestañas se deben abrir. Revisé el código e intenta abrir todos los enlaces de manera adecuada, pero en realidad no es así. ¿Algunas ideas?

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

Vas a tener que romper esto un poco más. ¿Se llama al ciclo inicial '.each()' el número de veces apropiado? ¿Dónde está específicamente tu código fallando? ¿El valor de 'openedTabs' es siempre el esperado, el número completo? Si realmente está fallando en 'window.open()' sospecho que estás alcanzando algún tipo de límite de seguridad impuesto por Chrome. – Brad

+0

El ciclo inicial '.each' solo se invoca una vez, activándose para cada url en toda la página que encuentra. El valor de 'openedTabs' siempre es correcto. Y no sé de ningún límite de seguridad, pero realmente me gustaría sortearlo, jaja – Wyko

+0

Lo siento, quise decir cuántas veces se ejecutó el código dentro de ese bucle, pero si 'opensTabs' es correcto, eso responde a la pregunta . Solo por las patadas, si tienes un bucle realmente simple que no hace más que abrir 50 ventanas, ¿se detiene a las 23 o así? ¿Siempre es 23? ¿Has intentado poner un 'sueño' allí? – Brad

Respuesta

0

Probablemente algo relacionado con un bloqueador de ventanas emergentes o lo que dijo Brad.
Su fácil suficientes para hacer frente a Tho, sólo tiene que utilizar la API de pestañas ....

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

... 55 pequeñas pestañas;)

3

Hay un intentional upper bound de 25 en window.open llamadas. Para más información, consulte Chromium bugs 2632 y 3382, pero en resumen, la idea es evitar los ataques de negación de servicio (tanto en la UI como en la memoria) de páginas que abren ventanas emergentes indefinidamente.

Las API de extensión como chrome.tabs.create (como sugiere la respuesta de PAEz) no están sujetas a estas API, ya que las extensiones ya tienen acceso privilegiado.

Cuestiones relacionadas