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

Разрешения манифеста расширения Chrome

Это мое первое расширение для Chrome.

В основном я уже написал html-файл, в котором есть файл javascript. Я заметил, что, по-видимому, вам нужно поместить javascript в виде отдельного файла в файл html. Это нормально. Сделал это. Ссылка на него в заголовке html.

Но я не уверен, как настроить файл манифеста, чтобы иметь возможность использовать javascript на моей всплывающей html-странице.

javascript не использует jquery. это чистый джаваскрипт.

Я не уверен, какие обязательные или необязательные разрешения я должен включить в манифест, если таковые имеются. Пока все, что я знаю, это то, что мне, возможно, придется включить туда разрешение «clipboardRead».

Или я должен использовать content_scripts вместо этого в манифесте.

это мой манифест.

{
  "manifest_version": 2,

  "name": "PhotoTagger",
  "description": "This extension helps you create your hashtags for your posts, quickly.",
  "version": "1.0",

  "content_scripts": [
    {
      "matches": ["<all_urls>"],
      "js": ["PhotoTagger.js"]
    }
  ],

  "permissions": [
    "clipboardRead",
  ],

  "browser_action": {
    "default_icon": "icons/Google-plus-19x19.png",
    "default_popup": "PhotoTagger.html"
  }
}

и пример функции в моем javascript (PhotoTagger.js):

function selectText(containerid) {
    if (document.selection) {
        var range = document.body.createTextRange();
        range.moveToElementText(document.getElementById(containerid));
        range.select();
    } else if (window.getSelection) {
        var range = document.createRange();
        range.selectNode(document.getElementById(containerid));
        window.getSelection().addRange(range);
    }
}

и это пример фрагмента моего html, вызывающего функцию Js:

<li id="#Sydney" onclick="selectText('#Sydney')">
    <input id="al2" type="checkbox" value="#Sydney +104262770460851770269"/>
    #Sydney</li>

очень ценю любую помощь, которую я могу получить.

Также следует упомянуть, что html отлично работает на открытой вкладке в Chrome. просто не работает, когда я запускаю его как расширение.


Ответы:


1

Я только начал использовать ChromeExtensions, поэтому это может быть не полный ответ, но вот некоторые проблемы, которые я вижу:

  1. content_scripts внедряются на страницу и имеют доступ к dom веб-страницы, но не к JS.
  2. всплывающие окна живут в своей собственной песочнице и имеют доступ только к тому, что находится в этой песочнице
  3. веб-страницы не могут получить доступ к JS ни в content_scripts, ни во всплывающих окнах

PhotoTagger.html должен иметь возможность взаимодействовать со своим собственным JS, просто добавив тег «скрипт», ссылающийся на PhotoTagger.js. Для этого не нужны никакие разрешения. Поэтому, если ваш фрагмент находится в PhotoTagger.html, а в PhotoTagger.html есть ссылка на «скрипт» на PhotoTagger.js, то все должно быть в порядке (и вы можете избавиться от всего раздела content_scripts). Если вы делаете это, и это не работает, вам может понадобиться связать больше кода.

Однако, если вы загружаете веб-страницу с этим html-фрагментом, это не сработает. Веб-страница не имеет доступа к JS в content_scripts или во всплывающем окне (я все еще ищу обходной путь для этого, но он заблокирован из-за проблем с безопасностью).

05.09.2013
  • Я не открываю реальную веб-страницу на вкладке. Это просто html-страница, которая открывается через всплывающее окно при нажатии на кнопку расширения. Этот всплывающий html, похоже, не имеет доступа к JS. Я правильно сослался. Доступ к файлу css осуществляется нормально. Когда вы говорите, что content_scripts внедряются на страницу, вы имеете в виду реальную html-страницу, загруженную на вкладку Chrome? 06.09.2013
  • Во-первых, извините, что не ответила раньше. Во-вторых, если вы просто пытаетесь получить доступ к JS из всплывающего окна html, возможны две проблемы: 1. Я использую "matches": ["*://*/*"], not "matches": ["<all_urls>"] 2. В html вам нужно включить скрипт следующим образом. Вы делаете это? <head> <script src="PhotoTagger.js"></script> </head> 19.11.2013
  • Новые материалы

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

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

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

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

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

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

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