2017-01-20 3 views
2

фона

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

я был в состоянии сделать только HTML всплывающее окно, просто добавив эти два файла:

manifest.json

{ 
    ..  
    "browser_action": { 
    "default_popup": "popup.html", 
    .. 
    } 
} 

popup.html

<html> 
    .. 
    hello world 
</html> 

проблема

Я хочу на самом деле загрузить хром events page, чтобы всплывающая страница вызывала страницу событий и взаимодействовала с ней.

, что я попробовал

Я добавил это manifest.json

"background": { 
    "scripts": ["eventsPage.js"], 
    "persistent": false 
    } 

и добавил простой eventsPage.js файл:

chrome.runtime.onInstalled.addListener(onInit); 
chrome.runtime.onStartup.addListener(onStartup); 

function onInit() { 
    console.log("on init"); 
} 

function onStartup() { 
    console.log("on startup"); 
} 

if (chrome.runtime && chrome.runtime.onStartup) { 
    chrome.runtime.onStartup.addListener(function() { 
    console.log('on startup stuff'); 
    }); 
} 

когда я запускаю расширение и нажмите на проверку, чтобы увидеть инструменты chrome dev .. на консоли ничего не отображается:

enter image description here

Я также попытался добавить ГНЦ eventsPage.js к popup.html:

</head> 
    .. 
    <script src="eventsPage.js"></script> 
    <body> 
    .. 

, но это ничего не меняет, я даже не могу найти eventsPage .js в хром-инструментах.

Как это сделать?

ответ

2

Много способов:

  1. Добавить скрипт, например popup.js в popup.html и называющие chrome.runtime.getBackgroundPage(function callback) взаимодействовать со страницей событий.

    popup.html

    ... 
    <script src="popup.js"></script> 
    ... 
    

    popup.js

    chrome.runtime.getBackgroundPage(backgroundPage => backgroundPage.testMethod()); 
    

    eventsPage.js

    const testMethod =() => console.log('test'); 
    
  2. Используйте Message Passing (есть много примеров в этой связи) для связи с событием стр.

  3. Поскольку вы хотите перенести данные между всплывающей страницей и страницей событий, существует много других способов решения проблемы, например, мы можем использовать глобальное хранилище, такое как chrome.storage, чтобы сохранить/загрузить/отреагировать на изменения.

+0

1. Вы используете справочную страницу и страницу события взаимозаменяемы .. они не одни и те же .. фоновые страницы осуждаются 2. Было бы хорошо, если вы можете написать некоторые примеры кода – abbood

+0

@abbood, в фазовая страница факта не устарела, и она просто используется для разных целей. Я добавил несколько простых примеров, и для вас это будет легкой задачей (вы опытны в iOS :)) –

+0

вот следующий вопрос: http://stackoverflow.com/questions/41758616/getting-cannot-access -a-хром-URL-четными хотя-им-не-вызова-это – abbood

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