Есть ли способ связать html-файл в другом каталоге при создании окна из background.js?

Я нахожусь на ранней стадии создания приложения Chrome, которое я планирую развернуть в интернет-магазине Chrome. У меня есть действительный манифест, файлы index.html, index.css, properties.css и background.js в папке приложения. В файле background.js у меня есть «обработчик событий», который ожидает запуска приложения. Затем он создает окно с телом index.html. Проблема в том, что файл background.js находится в папке, отличной от папки index.html. Вот иерархия папки моего приложения:

My app Name
images
My app icon.png
index
index.html
index.css
scripts
background.js
styles
properties.css
manifest.json

Всякий раз, когда я пытаюсь создать ссылку на файл index.html, это не удается. Когда приложение запускается, оно просто создает пустое окно. Я храню их в отдельных папках для организации, и если нет возможности сделать это, я просто соберу их вместе.

  1. Проверил консоль на ошибки. Их нет.
  2. Я пробовал метод html: ../index/index.html. Это не работает (о боже).

ПРИМЕЧАНИЕ: Я планирую добавить блок заголовка, который будет действовать как строка заголовка, потому что при создании окна я отключу блок по умолчанию.

фон.js

chrome.app.runtime.onLaunched.addListener(function() {
  chrome.app.window.create("../index/index.html", {
    id: 'main',
    bounds: { width: 620, height: 500 }
  });
});

manifest.json

{
  "manifest_version": 2,
  "name": "UI Button Designer",
  "version": "1",
  "icons": {
    "128": "images/icon_128.png"
  },
  "permissions": [],
  "app": {
    "background": {
      "scripts": ["scripts/background.js"]
    }
  },
  "minimum_chrome_version": "28"
}

index.html

<!DOCTYPE html>
<html>
<head>
  <meta charset = "UTF-8">
  <link rel = "stylesheet" type = "text/css" href = "../styles/properties.css">
  <link rel = "stylesheet" type = "text/css" href = "index.css">
</head>
<body>
  <div id = "container">
    <div id = "header"></div>
  </div>
</body>
</html>

index.css

#container {
  width: 100%;
  min-width: 100%;
  max-width: 100%;
  height: 100%;
  min-height: 100%;
  max-height: 100%;
  margin: 0;
  padding: 0;
  border: none;
}

#header {
  width: 100%;
  height: 10%;
  background-color: #fbbc05;
}

Я должен увидеть полосу, которая составляет 10% от высоты окна просмотра, но я просто вижу пустое окно.

Почему бы вам просто не использовать абсолютный путь от корня расширения, где находится manifest.json? Например "/index/index.html"

wOxxOm 12.06.2019 12:31

@wOxxOm К сожалению, это не работает :(

Spidy Bot 12.06.2019 21:35
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
2
280
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я думаю, вы можете просто заменить это:

chrome.app.runtime.onLaunched.addListener(function() {
  chrome.app.window.create("../index/index.html", {
    id: 'main',
    bounds: { width: 620, height: 500 }
  });
});

с участием:

chrome.app.runtime.onLaunched.addListener(function() {
  chrome.app.window.create("index/index.html", {
    id: 'main',
    bounds: { width: 620, height: 500 }
  });
});

В основном вам не нужны эти ../ до index/index.html

Это уже было предложено, и, похоже, это не работает :( Спасибо, что нашли время, чтобы ответить на мой вопрос, это много значит :)

Spidy Bot 13.06.2019 01:25
ОБНОВИТЬ Я тааак извиняюсь, предложенный вами способ работает! Проблема, препятствовавшая тому, чтобы он выглядел правильно, заключалась в том, что, когда я стилизовал div контейнера, чтобы он был полноразмерным, я не делал то же самое для html и тела. Видимо, это имеет большое значение! Что еще хуже, так это то, что когда я создавал это приложение как веб-сайт, я сделал то же самое для html и тела... Я должен - и в следующий раз буду более внимателен :)
Spidy Bot 13.06.2019 01:31

Рад слышать

Alireza 16.06.2019 13:28

Другие вопросы по теме