document.getElementsBy未定义

时间:2018-02-16 15:55:44

标签: javascript firefox youtube-api

我想创建我的第一个Firefox-Addon,所以我真的没经验。 我想创建一个插件,以修改YouTube网站。

background.js

    function editVideo() {
    document.getElementsByTagName("video")[0].playbackRate = 2;
    document.getElementById("movie_player").stopVideo();
    document.getElementById("movie_player").setPlaybackQuality('hd720');
    document.getElementById("movie_player").playVideo();
}

browser.browserAction.onClicked.addListener(editVideo);

的manifest.json

{

  "description": "YouTube-Test",
  "manifest_version": 2,
  "name": "YouTube-Test",
  "version": "1.0",

  "background": {
    "scripts": ["background.js"]
  },

  "browser_action": {
    "default_icon": {
      "48": "icons/logo_48.png",
      "64": "icons/logo_64.png"
    }
  }

}

因此,如果我点击按钮,Playbackrate应为2,质量为720p。 但没有任何反应!如果我直接在控制台中键入thoose命令,它就可以工作。

我总是收到这个错误:

  

document.getElementsByTagName(...)[0]未定义

或:

  

document.getElementById(...)为null

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

{
  "description": "YouTube-Test",
  "manifest_version": 2,
  "name": "YouTube-Test",
  "version": "1.0",

  "background": {
    "scripts": ["background.js"]
  },
  "content_scripts": [
      {
          "matches": ["https://www.youtube.com/*"],
          "js": ["runsOnWebPage.js"],
          "run_at": "document_idle"
      }
  ],
  "browser_action": {
    "default_icon": {
      "48": "icons/logo_48.png",
      "64": "icons/logo_64.png"
    }
  }
}

content_scripts中的js文件现在应该在youtube上运行,你可能想要添加更多"matches",因为这个只覆盖了那个特定的链接,youtube有1000个不同的链接