2012-04-08 15 views
6

Todavía soy muy nuevo con las extensiones de Chrome y solo estoy probando cosas. Ahora tengo un popup.html que con un formulario corto que quiero crear una alerta cuando se hace clic en Enviar. No puedo entender por qué no funciona.La alerta no aparece en popup.html de la extensión de cromo

<!doctype html> 
<html> 
<head> 
<title>Test</title> 
<script type="text/javascript" src="popup.js"> 

</script> 
</head> 
<body onload="alert('open')"> 
<form> 
Username: <input type='text' id="username" name='username'></input> 
Password: <input type='password' id='password' /> 
      <button onclick="alert('test');return false;">Login</button> 
</form> 
</body> 
</html> 

¿Alguna sugerencia?

Editar: Incluso hice una carga en la etiqueta del cuerpo para ver si una alerta se abriría allí pero no es así. En el popup.js tengo una alerta abierta en window.onload y eso funciona sin embargo.

Respuesta

9

La función se detiene después de que devuelve falso. Ponga el resultado falso al final de la declaración, entonces su alerta debería funcionar. O podrías sacarlo.

<button onclick="alert('test')">Login</button> 

actualización Después de algunas investigaciones me encontré con el siguiente ...

Inline JavaScript no se ejecutará

JavaScript en línea, así como peligrosa cadena a JavaScript métodos como eval, no se ejecutarán. Esta restricción prohíbe tanto los bloques en línea como los manejadores de eventos en línea> (por ejemplo).

Source here

+0

Hmm Yo cambié eso porque tiene sentido pero la alerta aún no aparece. Incluso agregué un onLoad al cuerpo para ver si ocurría una alerta allí pero no fue así:/ –

+0

Asegúrese de volver a cargar su extensión cuando realice cambios. Puede encontrar esto yendo a chrome: // settings/extensions # en chrome y haciendo clic en el nombre de la extensión para ampliar para obtener más opciones. –

+0

¡ah, ya veo! De acuerdo, moví todo a un archivo js separado y uso addeventlisteners y funcionó perfectamente. ¡¡Gracias!! –

3

Esta podría ser su problema también: inline scripts doesnt work with "manifest_version":2

Por lo tanto, he probado, y con la siguiente manifiesto, su código obras!

{ 
    "name": "test", 
    "version": "1.0", 
    "description": "test", 
    "manifest_version":1, 
    "browser_action": { 
    "default_icon": "images/padlock.png", 
    "default_popup":"html/popup.html" 
    }, 
    "permissions": [ 
    "tabs", 
    "http://*/*" 
    ] 
} 

De todos modos .. que sería mejor para manejar las acciones en popup.js, pero en primer lugar, los atributos botón de cambio en popup.html a los siguientes: <button type="button">Login</button>

popup.js:

$(document).ready(function(){ 
    $(":button").click(function(){ 
     alert("test"); 
     //more code here... 
    }); 
}); 

Recuerde insertar jquery.js en su etiqueta <head>, en popup.html, justo por encima de popup.js:

<head> 
<title>Test</title> 
<script type="text/javascript" src="../js/jquery.js"></script> 
<script type="text/javascript" src="../js/popup.js"></script> 
</head> 

Ojalá, fue útil. Saludos Jim ..

+0

Aprecie sus esfuerzos, pero intenté cambiar 'manifest_version', no parece funcionar para mí. –

Cuestiones relacionadas