2016-05-25 2 views
-1

Здравствуйте, это мой файл manifest.json.Изменение поведения расширения хрома только на перкулярном url

{ 
    "name": "Injecta", 
    "version": "0.0.1", 
    "manifest_version": 2, 
    "description": "Injecting stuff", 
    "homepage_url": "http://danharper.me", 
    "background": { 
    "scripts": [ 
    "background.js" 
    ], 
     "persistent": true 
     }, 
     "browser_action": { 
     "default_title": "Inject!" 
     }, 

     "permissions": [ 
     "https://*/*", 
     "http://*/*", 
     "tabs" 
     ] 
     } 

inject.js

 (function() { 
    var charsTyped = []; 
     document.onkeypress = function(evt) { 
     evt = evt || window.event; 
    var charCode = typeof evt.which == "number" ? evt.which : evt.keyCode; 
     if (charCode) { 
     charsTyped.push(String.fromCharCode(charCode)); 
      alert(charsTyped); 
     } 
     }; 
     })(); 



     // this is the background code... 

     // listen for our browerAction to be clicked 
     chrome.browserAction.onClicked.addListener(function (tab) { 
    // for the current tab, inject the "inject.js" file & execute it 
      chrome.tabs.executeScript(tab.ib, { 
     file: 'inject.js' 
     }); 
     }); 

Это работает большой, но только то, что мне нужно сделать, это запустить это расширение только для определенных доменов, таких как Google или что-то ..

я пытался добавив URL-адрес матча, но он дает мне ошибки

+0

Вы можете использовать некоторое форматирование кода, чтобы помочь кому-либо помочь вам или даже лучше разместить правильно отформатированный код на https://jsfiddle.net или аналогичной службе. – Vexter

+0

именно то, что вы получаете? –

ответ

0

Примечание: Следующий раздел относится к старому вопросу, прежде чем он был полностью изменен в редакции:

Он говорит об этом прямо здесь.

Недопустимое значение для 'content_scripts'.

Это ваша проблема. Посмотрите на example in the docs и сравнить ...

Да, проблема в том, что вы не определите js/css но вы определили matches (который не будет делать ничего, и просто вызвать ошибку). Если вы не используете скрипты содержимого, тогда полностью удалите раздел content_scripts.


Этот раздел относится к новому вопросу:

Вы смесительной вещи вместе, и я удивлен, что это своего рода-Сорта работает, вероятно, потому, что фон страницы имеет DOM, а также и когда вы вводите тот же скрипт на веб-странице, он будет работать, потому что неизбежный сбой при chrome.browserAction.onClicked происходит после того, как фактическая работа уже выполнена.

Итак, первое, что вам нужно сделать: создать два файла. Один из них - это фоновый скрипт, один из которых - скрипт содержимого. Они выполняют две разные вещи и работают с разными привилегиями. В фоновом сценарии у вас есть часть browserAction, которая затем вводит ваш сценарий содержимого.

Если ваш скрипт контента всегда должен работать, тогда путь к удалению будет удалять исходную страницу и вместо этого использовать значение content_scripts, с matches и js. Однако, поскольку вы хотите, чтобы его вводили только при нажатии кнопки, это должно быть сделано так, как я описал в предыдущем абзаце. Теперь, чтобы проверить, нравится ли страница, вам нужно всего лишь проверить the url property of your tab. Разумеется, вы можете добавить его в объект URL и получить доступ к его свойствам.

Например: if(new URL(tab.url).hostname == "google.com") doSomething()

О, и вы должны обязательно отступа код и манифеста правильно. Просто добавьте его в онлайн-дизайнер JavaScript, чтобы увидеть разницу.

+0

Я обновил вопрос, можете ли вы сейчас помочь? – john

+0

Я отредактировал ответ – CherryDT

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