Оповещение не работает во всплывающем окне в расширении Chrome
Может ли кто-нибудь мне помочь, чтобы выяснить мою проблему. Я установил свой веб-сайт как расширение chrome. Когда я устанавливаю расширение, оно переходит во всплывающее окно, спрашивая имя пользователя и пароль вместе с кнопкой входа в систему. Но когда я попытался предупредить имя пользователя, введенное пользователем в javascript, оно не работает. Кто-нибудь, пожалуйста, помогите мне. В чем причина? Вот мой манифест.json
{
"name": "Calpine Extension",
"version": "1.0",
"description": "Log on to calpinemate",
"manifest_version": 2,
"browser_action": {
"default_icon": "icon_128.png"
},
"background": {
"persistent": false,
"scripts": ["background.js"]
},
"browser_action": {
"default_title": "Test Extension",
"default_icon": "calpine_not_logged_in.png"
},
"permissions": [
"*://blog.calpinetech.com/test/index.php",
"alarms",
"notifications"
],
"web_accessible_resources": [
"/icon_128.png"]
}
Вот мой код, который создает всплывающее окно при установке
chrome.windows.create({url : "test.html"});
вот мой test.html
<html>
<head>
<script type="text/javascript">
function log(){
var uname=document.getElementById('name');
alert(uname);
}
</script>
</head>
<body>
<form name="userinfo" id="userinfo">
username :
<input id="name" type="text" name="username"/><br><br>
password :
<input type="password" name="password"/><br><br>
<input type="button" value="Log In" onclick="log()"/>
<p id="pp"></p>
</form>
</body>
</html>
2 ответа
Причина, по которой он не работает, заключается в том, что test.html
открывается как "представление" вашего расширения, а Политика безопасности контента (CSP) предотвращает выполнение встроенных сценариев и встроенных привязок событий.
Вы должны переместить код и привязки событий во внешний файл JS.
В test.html:
<html>
<head>
<script type="text/javascript" src="test.js"></script>
</head>
<body>
...
<input type="button" id="login" value="Log In" />
...
</body>
</html>
В test.js:
window.addEventListener('DOMContentLoaded', function() {
var login = document.querySelector('input#login');
login.addEventListener('click', function() {
// ...do stuff...
});
});
Вы должны подобрать значение поля ввода:
var uname = document.getElementById('name').value;