2012-04-08 23 views
6

Nadal jestem bardzo nowy z rozszerzeniami chrome i właśnie testuję rzeczy. W tej chwili mam popup.html, który za pomocą krótkiego formularza chcę utworzyć alert po kliknięciu submit. Nie mogę do końca życia zrozumieć, dlaczego to nie działa.Alert nie pojawia się w popup.html rozszerzenia chrome

<!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> 

Wszelkie sugestie?

Edycja: Nawet w tagu body dokonałem nawet aktualizacji, aby zobaczyć, czy alert zostanie otwarty, ale nie. W popup.js mam alert otwarty na window.onload i to działa jednak.

Odpowiedz

9

Funkcja zatrzymuje się po powrocie false. Zwróć wartość false na końcu wyciągu, a następnie powinien zadziałać Twój alert. Lub możesz go wyjąć.

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

Aktualizacja Po kilku badań okazało się, co następuje ...

Inline JavaScript nie zostanie wykonana

Inline JavaScript, a także niebezpieczny ciąg do JavaScript metody takie jak eval nie zostaną wykonane. To ograniczenie blokuje zarówno wbudowane bloki, jak i wbudowane programy obsługi zdarzeń> (np.).

Source here

+0

Hmm Zmieniłem to, ponieważ ma sens, ale alert nadal się nie pojawia. Dodałem nawet usługę OnLoad do organizera, aby sprawdzić, czy wystąpi alert, ale nie:/ –

+0

Po wprowadzeniu zmian należy ponownie załadować rozszerzenie. Możesz to znaleźć, przechodząc do chrome: // settings/extensions # w chrome i klikając nazwę rozszerzenia, aby rozwinąć, aby uzyskać więcej opcji. –

+0

ah Widzę! Okay Przeniosłem wszystko do oddzielnego pliku js i używam addeventlistenerów i działało idealnie. Dzięki!! –

3

To może być problem zbyt: inline scripts doesnt work with "manifest_version":2

Więc przetestowany iz następujących manifestu, kod działa!

{ 
    "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://*/*" 
    ] 
} 

.. W każdym razie byłoby lepiej obsługiwać działania w popup.js, ale najpierw, przycisk zmiany atrybutów popup.html do następujących: <button type="button">Login</button>

popup.js:

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

Pamiętaj, aby wstawić jquery.js w tagu <head> w popup.html, tuż nad od 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> 

Chciałbym, było użyteczne. Pozdrowienia Jim ..

+0

Doceniam twoje wysiłki, ale próbowałem zmienić 'manifest_version', nie działa dla mnie. –

Powiązane problemy