1

У меня есть следующий код в моем хромированном скрипте содержимого расширения:Расширение сценария содержания открытие только: пусто

window.open(chrome.extension.getURL("options.html"),'_blank'); 

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

Когда я запускаю тот же код (через консоль инструментов разработчика) на странице параметров, он работает правильно. Если я запустил предупреждение с текстом chrome.extension.getURL("options.html"), он работает так, как ожидалось.

This chrome documentation page предполагает, что то, что я делаю, должно работать правильно. Итак, как я должен пытаться это исправить?

EDIT:

Я считаю, что это имеет какое-то отношение к политике безопасности контента.

  • Если я впрыснуть ссылку на эту страницу и нажмите на него, я получаю около: пусто
  • Если я впрыснуть ссылку и я правая кнопка мыши, а затем либо открыть в новом окне/окне или копиях URL, он работает нормально.
  • Если я ввожу перенаправление, я получаю перенаправление примерно: blank
  • Если я ввожу текст URL в любом месте, он отлично работает.
  • Если я ввожу точный URL-адрес (без chrome.extension.getURL и т. Д.), С ЛЮБОЙ страницы без расширения, это не сработает.

Таким образом, я думаю, что мой новый (более общий) вопрос: Как я могу запустить страницу параметров из сценария контента?

+1

Используйте 'chrome.tabs .create() 't o откройте окно. Используйте 'sendMessage' для его запуска, если необходимо. –

+0

@BrockAdams У меня нет фоновой страницы, и я хочу попытаться избежать захвата 20 КБ памяти в браузере навсегда, если она используется только при первом загрузке пользователем определенной страницы после установки расширения. –

ответ

2

Для того, чтобы иметь возможность использовать HTML-файл (или любой другой ресурс) вне контекста расширения (например, в веб-страницы), вам нужно добавить целевой файл HTML в web_accessible_resources раздел вашего манифеста. Например:

Расширение файла структуры:

  root-dir/ 
      |_____manifest.json 
      |_____content.js 
      |_____options.html 

content.js:

/* Append a link to the web-page's body */ 
var a = document.createElement("a"); 
a.href = chrome.extension.getURL("options.html"); 
a.target = "_blank"; 
a.textContent = "My HTML file"; 
document.body.appendChild(a); 

manifest.json:

{ 
    "manifest_version": 2, 
    "name": "Test Extension", 
    "version": "0.0", 
    "offline_enabled": true, 

    "content_scripts": [{ 
     "matches": ["*://*/*"], 
     "js":   ["content.js"], 
     "run_at":  "document_end", 
     "all_frames": false 
    }], 

    "web_accessible_resources": ["options.html"] 
} 

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

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