2016-06-01 5 views
0

Я пытаюсь сделать простое расширение для Google Chrome, но я думаю, что у меня есть некоторые ошибки. Это расширение заменяет слово для другого слова. Некоторые пользователи имеют аналогичные вопросы, но я не могу найти решение моей проблемы: $Chrome Extension Words Замените

Это HTML

<button id="iniciar">Cambiar</button> 
    <script type="text/javascript" src=cambiar.js></script> 

Это Js

document.addEventListener('DOMContentLoaded', function() { 
    "use strict"; 
    var palabra = document.getElementById('iniciar'); 

    palabra.addEventListener("click", function() { 

     document.body.innerHTML = document.body.innerHTML.replace(new RegExp("1", 'g'), "2"); 

    }); 
}); 

И это JSON

{ 
    "name": "TextBreak" 
    , "version": "0.1" 
    , "manifest_version": 2 
    , "browser_action": { 
     "default_icon": "flag.png" 
     , "default_title": "TextBreak" 
     , "default_popup": "popup.html" 
    } 
    , "content_scripts": [ 
     { 
      "matches": ["http://*/*", "https://*/*"] 
      , "js": ["cambiar.js"] 
      , "run_at": "document_end" 
     } 
    ] 
} 
+0

, что ваш вопрос? Что такое деталь ошибки? – Kelvin

+0

Когда я устанавливаю плагин и проверяю его на веб-странице, расширение не заменяет 1 до 2. –

+0

любая информация об ошибке в консоли? – Kelvin

ответ

0

Вся концепция вашего кода неверна. Кажется, вы еще не понимаете основ. Я бы посоветовал вам прочитать об architecture of Chrome extensions, прежде чем экспериментировать.

Ошибки в коде:

  1. Content scripts are executed on the page that they are injected into. Это означает, что вы пытаетесь подключить свою функцию к элементу "iniciar" на целевой странице, а не по всплывающему окну.

  2. Ваш скрипт контента никоим образом не связан с вашей всплывающей страницей. Он будет автоматически вводиться автоматически на каждой соответствующей странице. Если вы хотите вызывать загрузку скрипта контента из всплывающего окна, вам необходимо использовать programmatic injection.

  3. Сценарии содержимого с "run_at": "document_end" вводятся после создания DOM. Это означает, что ваш слушатель DOMContentLoaded никогда не будет стрелять.

0

Спасибо, теперь расширение работает.

HTML.

<button id="iniciar">Cambiar</button> 
<script type="text/javascript" src="cambiar.js"></script> 

JS

document.addEventListener('DOMContentLoaded', function() { 
    var detectado = document.getElementById('iniciar'); 
     detectado.addEventListener('click', function() { 
     chrome.tabs.executeScript(null, {code: "document.body.innerHTML = document.body.innerHTML.replace(new RegExp('1' , 'g'), '2');"});  

    }); 
}); 

JSON

"permissions": [ 
     "tabs", 
     "<all_urls>" 
    ] 
    , "browser_action": { 
     "default_icon": "flag.png" 
     , "default_title": "Relaxing cup of café con leche" 
     , "default_popup": "popup.html" 
    }, 
    "content_scripts": [ 
     { 
      "matches": [ 
       "<all_urls>" 
      ], 
      "js": ["cambiar.js"] 
     } 
    ]