Nano Hash - криптовалюты, майнинг, программирование

Событие OnClick не работает в моем расширении Chrome

Я сделал небольшое расширение, которое вставляет кнопки на html-страницу, и я вставил onClick события для каждой кнопки, но когда я нажимаю их, они не работают. Я нашел несколько тем на этом сайте, и один парень говорил о addEventListener, но я не смог их использовать. Мой код выглядит примерно так:

var setButton = "<button type='button' id='setter2' onclick=Set_one(this.id)>set</button>";
var str = getRow.insertCell(-1);
str.innerHTML = setButton;

  • Существует ли функция Set_one? 19.04.2015
  • Это из скрипта контента или из другой части расширения? 19.04.2015
  • да, Set_one существует, и он находится в том же самом content.js 19.04.2015

Ответы:


1

В расширениях Chrome встроенный код запрещен. Вы вообще не можете использовать атрибут onclick для сценариев расширения, а CSP не может быть ослаблен.

Вам придется использовать addEventListener, чтобы заставить его работать. Это не сложно и описано в документации, указанной выше.

var setButton = "<button type='button' id='setter2' onclick=Set_one(this.id)>set</button>";
var str = getRow.insertCell(-1);
str.innerHTML = setButton;
document.getElementById("setter2").addEventListener("click", function() {
  Set_one(this.id);
});

Это даже лучше, если вы не используете присваивание innerHTML и напрямую создаете/добавляете элементы:

var setButton = document.createElement("button");
    setButton.textContent = "set";
    setButton.id = "setter2";
    setButton.addEventListener("click", function() {
      Set_one(this.id);
    });
getRow.insertCell(-1).appendChild(setButton);
19.04.2015
  • второй код работает, но когда я его нажимаю, страница перезагружается 19.04.2015
  • я добавил setButton.type = кнопка; и это помогло 20.04.2015
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..