Manipulating Youtube's base.js functions









up vote
0
down vote

favorite












I recently wrote a personal Firefox addon which lowers the sound volume of the first video element found in a webpage using a very simple and generic code attached to a button so I can automatically lower the volume to the value of 0.003 whenever I want to



This is the code that I used in my addon:



 function lower_volume() 
document.getElementsByTagName("video")[0].volume = 0.004;



The approach was successful on many websites including YouTube but I faced a small problem that a function that resides in YouTube's base.js :g.h.setVolume=function(a)XI();this.o.volume=a; gets called after a specific amount of time which in its turn sets the volume of the video element to the value of the volume slider and that's something I don't want to happen.



I wonder if there is a way to redefine the function g.h.setVolume that resides in base.js into something like g.h.setVolume=function(a); ?



I already tried to use



document.getElementsByTagName("video")[0].onvolumechange = lower_volume;


In order to lower the volume once again as soon as the function setVolume changes the volume value and the approach was successful but the new volume is heard for a tenth of a second which is a bit annoying sometimes. That's why I want to know if there is any code that I can write to redefine the function g.h.setVolume completely.



I know that what I am asking might seem a bit silly and kind of impractical and there are many other ways to accomplish what I am trying to do in a better way, but since my addon is just for personal use, I just want to know if there is a possible way that enables me to redefine the g.h.setVolume function.



This link contains the complete code of base.js



I am still a beginner in JavaScript and any help is much appreciated!










share|improve this question

























    up vote
    0
    down vote

    favorite












    I recently wrote a personal Firefox addon which lowers the sound volume of the first video element found in a webpage using a very simple and generic code attached to a button so I can automatically lower the volume to the value of 0.003 whenever I want to



    This is the code that I used in my addon:



     function lower_volume() 
    document.getElementsByTagName("video")[0].volume = 0.004;



    The approach was successful on many websites including YouTube but I faced a small problem that a function that resides in YouTube's base.js :g.h.setVolume=function(a)XI();this.o.volume=a; gets called after a specific amount of time which in its turn sets the volume of the video element to the value of the volume slider and that's something I don't want to happen.



    I wonder if there is a way to redefine the function g.h.setVolume that resides in base.js into something like g.h.setVolume=function(a); ?



    I already tried to use



    document.getElementsByTagName("video")[0].onvolumechange = lower_volume;


    In order to lower the volume once again as soon as the function setVolume changes the volume value and the approach was successful but the new volume is heard for a tenth of a second which is a bit annoying sometimes. That's why I want to know if there is any code that I can write to redefine the function g.h.setVolume completely.



    I know that what I am asking might seem a bit silly and kind of impractical and there are many other ways to accomplish what I am trying to do in a better way, but since my addon is just for personal use, I just want to know if there is a possible way that enables me to redefine the g.h.setVolume function.



    This link contains the complete code of base.js



    I am still a beginner in JavaScript and any help is much appreciated!










    share|improve this question























      up vote
      0
      down vote

      favorite









      up vote
      0
      down vote

      favorite











      I recently wrote a personal Firefox addon which lowers the sound volume of the first video element found in a webpage using a very simple and generic code attached to a button so I can automatically lower the volume to the value of 0.003 whenever I want to



      This is the code that I used in my addon:



       function lower_volume() 
      document.getElementsByTagName("video")[0].volume = 0.004;



      The approach was successful on many websites including YouTube but I faced a small problem that a function that resides in YouTube's base.js :g.h.setVolume=function(a)XI();this.o.volume=a; gets called after a specific amount of time which in its turn sets the volume of the video element to the value of the volume slider and that's something I don't want to happen.



      I wonder if there is a way to redefine the function g.h.setVolume that resides in base.js into something like g.h.setVolume=function(a); ?



      I already tried to use



      document.getElementsByTagName("video")[0].onvolumechange = lower_volume;


      In order to lower the volume once again as soon as the function setVolume changes the volume value and the approach was successful but the new volume is heard for a tenth of a second which is a bit annoying sometimes. That's why I want to know if there is any code that I can write to redefine the function g.h.setVolume completely.



      I know that what I am asking might seem a bit silly and kind of impractical and there are many other ways to accomplish what I am trying to do in a better way, but since my addon is just for personal use, I just want to know if there is a possible way that enables me to redefine the g.h.setVolume function.



      This link contains the complete code of base.js



      I am still a beginner in JavaScript and any help is much appreciated!










      share|improve this question













      I recently wrote a personal Firefox addon which lowers the sound volume of the first video element found in a webpage using a very simple and generic code attached to a button so I can automatically lower the volume to the value of 0.003 whenever I want to



      This is the code that I used in my addon:



       function lower_volume() 
      document.getElementsByTagName("video")[0].volume = 0.004;



      The approach was successful on many websites including YouTube but I faced a small problem that a function that resides in YouTube's base.js :g.h.setVolume=function(a)XI();this.o.volume=a; gets called after a specific amount of time which in its turn sets the volume of the video element to the value of the volume slider and that's something I don't want to happen.



      I wonder if there is a way to redefine the function g.h.setVolume that resides in base.js into something like g.h.setVolume=function(a); ?



      I already tried to use



      document.getElementsByTagName("video")[0].onvolumechange = lower_volume;


      In order to lower the volume once again as soon as the function setVolume changes the volume value and the approach was successful but the new volume is heard for a tenth of a second which is a bit annoying sometimes. That's why I want to know if there is any code that I can write to redefine the function g.h.setVolume completely.



      I know that what I am asking might seem a bit silly and kind of impractical and there are many other ways to accomplish what I am trying to do in a better way, but since my addon is just for personal use, I just want to know if there is a possible way that enables me to redefine the g.h.setVolume function.



      This link contains the complete code of base.js



      I am still a beginner in JavaScript and any help is much appreciated!







      javascript






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 10 at 1:46









      DarkPointer

      11




      11



























          active

          oldest

          votes











          Your Answer






          StackExchange.ifUsing("editor", function ()
          StackExchange.using("externalEditor", function ()
          StackExchange.using("snippets", function ()
          StackExchange.snippets.init();
          );
          );
          , "code-snippets");

          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "1"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );













          draft saved

          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53235337%2fmanipulating-youtubes-base-js-functions%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown






























          active

          oldest

          votes













          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes















          draft saved

          draft discarded
















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          To learn more, see our tips on writing great answers.





          Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


          Please pay close attention to the following guidance:


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53235337%2fmanipulating-youtubes-base-js-functions%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Use pre created SQLite database for Android project in kotlin

          Darth Vader #20

          Ondo