javascript - Chrome extension DOM Manipulation doesn't work all the time -


so i'm trying learn javascript while messing around building chrome extension. i'm trying simple dom manipulation removing elements , adding buttons site. got working problem reason dom manipulation doesn't happen time. i'd have refresh page , work sometimes. not sure what's going on.

manifest.json

{   "name": "twitch filter",   "version": "1",   "description": "filters out streamers , games www.twitch.tv",   "background": {"page": "background.html"},   "manifest_version": 2,   "browser_action": {     "name": "twitch filter",     "icons": ["icon.png"],     "default_icon": "icon.png"   },   "content_scripts": [ {     "js": [ "jquery.js", "background.js"],     "css": ["customstyles.css"],     "matches": [ "http://www.twitch.tv/directory/all", "https://www.twitch.tv/directory/all", "https://www.twitch.tv/directory/random", "http://www.twitch.tv/directory/random"],     "run_at": "document_end"   }] } 

background.js

var blockedusers= ['/test']; var blockedtypes = ['test'];  $(document).ready(function() {    console.log("loaded");   blockgames(blockedtypes);   blockstreamers(blockedusers);   addblockuserbuttons();    mutationobserver = window.mutationobserver;    var observer = new mutationobserver(function(mutations, observer) {       // fired when mutation occurs       blockgames(blockedtypes);       blockstreamers(blockedusers);       addblockuserbuttons();       // ...   });    // define element should observed observer   // , types of mutations trigger callback   var target = document;   var config = {subtree: true, attributes: false, childlist: true, characterdata:false};   observer.observe(target, config); });  function blockstreamers(blockedusers) {   var streamusernames = document.queryselectorall('a.cap');   for(i = 0; < streamusernames.length;i++)   {       var item = streamusernames[i];       var blockedboolean = $.inarray(item.getattribute('href'), blockedusers);       if (blockedboolean != -1) {         $(item).closest('div[class^="stream item"]').remove();       }   } };  function blockgames(blockedtypes) {   var streamboxarts = document.queryselectorall('a.boxart');   for(i=0; < streamboxarts.length;i++)   {     var item = streamboxarts[i];     var blockedboolean = $.inarray(item.getattribute('title'), blockedtypes);     if (blockedboolean != -1) {       $(item).closest('div[class^="stream item"]').remove();     }   } };  function addblockuserbuttons() {   var userslist = $('p.info').children('a');   for(i = 0; < userslist.length;i++) {     var user = userslist[i];     var streameusername = user.getattribute('href').replace('/profile', '');     var blockidname = 'blockuser_link_' + streameusername.replace('/','');     var newnode = document.createelement('a');     newnode.setattribute('href', '#');     newnode.setattribute('id', blockidname);     $(newnode).text('block');     user.parentnode.insertbefore(newnode, user.nextsibling);     document.getelementbyid(blockidname).addeventlistener('click', createblockuserfunc(streameusername));   } };  function createblockuserfunc(i) {     return function() {       blockuser(i);     }; }  function blockuser(streamer){   blockedusers.push(streamer);   blockstreamers(blockedusers); }; 

it's possible there's unusual site in question causes dom not become ready unusual length of time, , content scripts not running because you've set them run @ document_end. might try seeing if switching document_idle makes difference. also, might try simple test having content script console.log('hello world') , verifying script running on page; if works can progressively add more code hello world script full actual code, , should find point @ starts breaking.


Comments

Popular posts from this blog

javascript - Bootstrap Popover: iOS Safari strange behaviour -

Magento/PHP - Get phones on all members in a customer group -

session - Logging Out Using PHP -