Chrome扩展程序中的Javascript将无法加载,与孤立的世界无关

时间:2015-10-20 01:24:18

标签: javascript google-chrome google-chrome-extension

我为特定网站编写了一个javascript扩展程序,用于跟踪用户的点击次数并记录文本内容。

当我将脚本粘贴到控制台时,脚本运行得很好,但是当我将它加载到扩展中时,它似乎根本不会执行。

我知道内容脚本是在孤立的世界中运行的,但我的脚本不依赖于网页中的任何变量或功能。

也许我需要在我的清单中获得许可?

这是清单

{
  "manifest_version": 2,
  "name": "Vortojo",
  "version": "0.1",
  "content_security_policy": "script-src 'self' https://cdn.firebase.com https://*.firebaseio.com; object-src 'self'",
  "default_locale": "en",
  "description": "Saved words",
  "icons":{
    "16": "img/icon16.png",
    "48": "img/icon48.png"
  },
  "browser_action": {
    "default_icon": {
      "16": "img/icon16"
    },
    "default_title": "browser action",
    "default_popup": "browser_action/browser_action.html"
  }
}

这里是javascript browser_action.js

var wordsWritten = document.getElementsByTagName("var");

var wordBank ={};

for (var i = 0; i < wordsWritten.length; i++){
    wordsWritten[i].addEventListener("click", function(){
        if (document.getElementsByClassName("vortarobobelo").length != 0){
            var wordbubble = document.getElementsByClassName("vortarobobelo")[0].children[0]
            var words = wordbubble.children

            for (var i = 0; i < words.length; i++ ){
                var word = words[i].children[0].innerText; // the word
                var translation = words[i].children[1].innerText; // the translation
                wordBank[word] = translation;
                console.log(word,translation);
            }
        }           
    })
};

1 个答案:

答案 0 :(得分:0)

您没有发布browser_action.html的代码,但可能是加载browser_action.js的文件。这意味着您的所有getElementsBy命令都指的是弹出页面的DOM,而不是特定网站的DOM。区分弹出窗口,背景和内容脚本的一个很好的参考是Overview

您需要使用内容脚本来访问特定网站的DOM。目前,您根本不需要后台脚本。您最终是否取决于您对wordBank的要求。