Предупреждение не работает во всплывающем окне в расширении 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>

person user1991    schedule 02.12.2013    source источник


Ответы (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...
    });
});
person gkalpak    schedule 02.12.2013

Вы должны подобрать значение поля ввода:

var uname = document.getElementById('name').value;
person Anto Jurković    schedule 02.12.2013
comment
Привет, Анто, я изменил свой код, как ты сказал. Но теперь он также не работает. Пожалуйста, помоги мне. - person user1991; 02.12.2013
comment
Страница test.html без чего-либо еще должна отображать имя пользователя во всплывающем окне предупреждения. У вас появляется всплывающее окно или нет? И если да, сообщение пустое? У вас заблокированы всплывающие окна? Проверьте наличие маленького значка в адресной строке. - person Anto Jurković; 02.12.2013
comment
Да, всплывающее окно отображается. Но предупреждение не работает. Окно запрашивает имя пользователя и пароль. Но когда я пытался предупредить, оно не работает. - person user1991; 02.12.2013