2016-12-20 6 views
0

Я экспериментировал с расширениями Chrome, и я обнаружил странное поведение всплывающего окна.Расширения Chrome - почему событие click во всплывающем обновлении popup html?

В popup.html есть один элемент <a id="grantexpert">...</a> и в popup.js Я бы хотел изменить цвет фона этого элемента при нажатии. Изменение цвета работает при изменении сразу после готовности документа. Но когда в событии клика цвет изменяется в течение очень короткого времени (просто мигание) при нажатии, а затем сразу возвращается к исходным настройкам. Похоже, всплывающее окно перезагружается снова после события click.

манифеста:

"browser_action": { 
    "default_popup": "popup/popup.html" 
    }, 

popup.html:

<!DOCTYPE html> 
    <head> 
    <script src='../other/jquery-3.1.1.min.js'></script> 
    <script src='popup.js'></script> 
    </head> 

    <body style="width:250px;"> 

    <a class="testitem" href id="grantexpert">grantexpert.sk</a> 

    </body> 
</html> 

popup.js:

(function($) { 

    $(document).ready(function() { 

    //$("#grantexpert").css('font-size', '28px'); - this works 

    // this does not work 
    $('#grantexpert').click(function() { 
     $(this).css('font-size', '28px'); 
    }); 

    }); 

})(jQuery); 

Почему элемент изменить цвет для мигания, но не сохраняет скорректированные свойства после события click и возвратит их обратно?

ответ

2

Попытка удаления пустой href на a:

<a class="testitem" href id="grantexpert">grantexpert.sk</a> 

к:

<a class="testitem" id="grantexpert">grantexpert.sk</a> 
+0

Теперь это работает, но я не понимаю, почему. – Incredible

+0

Беспокойство 'href' обновляло всплывающее окно. – Syden

0

Вынуть HREF из тега. Href изменит URL-адрес всплывающего окна, чтобы всплывающее окно обновилось. Удалив его, вы не будете изменять URL-адрес при нажатии.

0

Я испытал нечто подобное. Когда у меня есть простая кнопка во всплывающем окне:

<button id="myButton">My Button</button> 

Нажатие на нее заставляет всплывающее окно перезагружается. Чтобы избежать такого поведения, вам необходимо предотвратить событие по умолчанию. Например, с jQuery:

$("#myButton").click(function(event){ 
    event.preventDefault(); // needed to prevent the popup from being reloaded 
    // do something here 
    showMessage("My Button has been clicked"); 
}); 

 Смежные вопросы

  • Нет связанных вопросов^_^