Попытка использовать встроенный код в манифесте v3

Первое, что я хотел бы спросить: возможно ли это? Если нет, то какова еще одна альтернатива, поскольку я использую webGL.

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

Полный код:

      1 <html lang="en-us">
2  <head>
3    <meta charset="utf-8">
4    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
5    <title>Unity WebGL Player | Tetris</title>
6    <link rel="shortcut icon" href="TemplateData/favicon.ico">
7    <link rel="stylesheet" href="TemplateData/style.css">
8  </head>
9  <body>
10  <div style="width:300px;">
11 <div style="height:600px;">
12    <div id="unity-container" class="unity-desktop">
13      <canvas id="unity-canvas" width=300 height=600></canvas>
14      <div id="unity-loading-bar">
15        <div id="unity-logo"></div>
16        <div id="unity-progress-bar-empty">
17          <div id="unity-progress-bar-full"></div>
18        </div>
19      </div>
20      <div id="unity-mobile-warning">
21        WebGL builds are not supported on mobile devices.
22      
23    </div>
24    <script>
25      var buildUrl = "Build";
26      var loaderUrl = buildUrl + "/Tetris.loader.js";
27      var config = {
28        dataUrl: buildUrl + "/Tetris.data",
29        frameworkUrl: buildUrl + "/Tetris.framework.js",
30        codeUrl: buildUrl + "/Tetris.wasm",
31        streamingAssetsUrl: "StreamingAssets",
32        companyName: "RSS",
33        productName: "Tetris",
34        productVersion: "1.0",
35      };
36
37      var container = document.querySelector("#unity-container");
38      var canvas = document.querySelector("#unity-canvas");
39      var loadingBar = document.querySelector("#unity-loading-bar");
40      var progressBarFull = document.querySelector("#unity-progress-bar-full");
41      var fullscreenButton = document.querySelector("#unity-fullscreen-button");
42      var mobileWarning = document.querySelector("#unity-mobile-warning");
43
44      // By default Unity keeps WebGL canvas render target size matched with
45      // the DOM size of the canvas element (scaled by window.devicePixelRatio)
46      // Set this to false if you want to decouple this synchronization from
47      // happening inside the engine, and you would instead like to size up
48      // the canvas DOM size and WebGL render target sizes yourself.
49      // config.matchWebGLToCanvasSize = false;
50
51      if (/iPhone|iPad|iPod|Android/i.test(navigator.userAgent)) {
52        container.className = "unity-mobile";
53        // Avoid draining fillrate performance on mobile devices,
54        // and default/override low DPI mode on mobile browsers.
55        config.devicePixelRatio = 1;
56        mobileWarning.style.display = "block";
57        setTimeout(() => {
58          mobileWarning.style.display = "none";
59        }, 5000);
60      } else {
61        canvas.style.width = "960px";
62        canvas.style.height = "600px";
63      }
64      loadingBar.style.display = "block";
65
66      var script = document.createElement("script");
67      script.src = loaderUrl;
68      script.onload = () => {
69        createUnityInstance(canvas, config, (progress) => {
70          progressBarFull.style.width = 100 * progress + "%";
71        }).then((unityInstance) => {
72          loadingBar.style.display = "none";
73          fullscreenButton.onclick = () => {
74            unityInstance.SetFullscreen(1);
75          };
76        }).catch((message) => {
77          alert(message);
78        });
79      };
80      document.body.appendChild(script);
81    </script>
82  </body>
83</html>

Ошибки:

(строка 28) Отказано в выполнении встроенного сценария, поскольку он нарушает следующую директиву политики безопасности содержимого: "script-src 'self'". Для включения встроенного выполнения требуется ключевое слово 'unsafe-inline', хэш ('sha256-3JCafC5bWxhIvW3rJktB1iscJ+3ZX4DuRi2p1U7DmbQ=') или одноразовый номер ('nonce -...').

(Строка 30) Отказ от выполнения встроенного скрипта, поскольку он нарушает следующую директиву Политики безопасности контента: «script-src 'self'». Для включения встроенного выполнения требуется ключевое слово 'unsafe-inline', хэш ('sha256-3JCafC5bWxhIvW3rJktB1iscJ+3ZX4DuRi2p1U7DmbQ=') или одноразовый номер ('nonce -...').

(Строка 25)

Отказано в выполнении встроенного сценария, поскольку он нарушает следующую директиву политики безопасности содержимого: «script-src 'self'». Для включения встроенного выполнения требуется ключевое слово 'unsafe-inline', хэш ('sha256-3JCafC5bWxhIvW3rJktB1iscJ+3ZX4DuRi2p1U7DmbQ=') или одноразовый номер ('nonce -...').

Это мой файл manifest.json:

        // Required
  "manifest_version": 3,
  "name": "Tetrys Browser Popup",
  "version": "1.0",

  // Recommended
  "description": "Tetrys browser popup that works offline",
  "minimum_chrome_version": "46",
  "content_security_policy": {
    "script-src": "index.html",
    "self": "unsafe-inline"

  },
  "action": {
  "default_icon": "Tetris Logo.png",
  "default_popup": "index.html"
  }
}

0 ответов

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