Force Flash Wmode

Force flash video playback to use wmode direct to allow hardware acceleration

  1. // ==UserScript==
  2. // @name Force Flash Wmode
  3. // @namespace Mikhoul.rog
  4. // @description Force flash video playback to use wmode direct to allow hardware acceleration
  5. // @author Based on anonymous Userscripts
  6. // @version 1.0.2
  7. // @include http://www.youtube.com/watch*
  8. // @include http://youtube.com/watch*
  9. // @include https://www.youtube.com/watch*
  10. // @include https://youtube.com/watch*
  11. // @include http://dailymotion.com*
  12. // @include http://www.dailymotion.com*
  13. // @include https://dailymotion.com*
  14. // @include https://www.dailymotion.com*
  15. // @include http://vimeo.com*
  16. // @include http://www.vimeo.com*
  17. // @include https://vimeo.com*
  18. // @include https://www.vimeo.com*
  19. // @include http://metacafe.com*
  20. // @include http://www.metacafe.com*
  21. // @include https://metacafe.com*
  22. // @include https://www.metacafe.com*
  23. // @include http://funnyordie.com*
  24. // @include http://www.funnyordie.com*
  25. // @include https://funnyordie.com*
  26. // @include https://www.funnyordie.com*
  27. // @include http://videojug.com*
  28. // @include http://www.videojug.com*
  29. // @include https://videojug.com*
  30. // @include https://www.videojug.com*
  31. // @include http://blip.tv*
  32. // @include http://www.blip.tv*
  33. // @include https://blip.tv*
  34. // @include https://www.blip.tv*
  35. // @include http://vevo.com*
  36. // @include http://www.vevo.com*
  37. // @include https://vevo.com*
  38. // @include https://www.vevo.com*
  39. // @include http://megavideo.com/*v=*
  40. // @include http://www.megavideo.com/*v=*
  41. // @include http://megaporn.com/video/*v=*
  42. // @include http://www.megaporn.com/video/*v=*
  43. // @include http://facebook.com/*video*
  44. // @include http://www.facebook.com/*video*
  45. // @include http://www.collegehumor.com/video/*
  46. // @include http://redtube.com/*
  47. // @include http://www.redtube.com/*
  48. // @include http://youporn.com/*watch*
  49. // @include http://www.youporn.com/*watch*
  50. // @include http://pornhub.com/*video*
  51. // @include http://www.pornhub.com/*video*
  52. // @include http://pornotube.com/*media*
  53. // @include http://www.pornotube.com/*media*
  54. // @include http://pornotube.com/*m=*
  55. // @include http://www.pornotube.com/*m=*
  56. // @include http://xvideos.com/*video*
  57. // @include http://www.xvideos.com/*video*
  58. // @include http://www.keezmovies.com/*
  59. // @include http://keezmovies.com/*
  60. // @include http://www.tube8.com/*
  61. // @include http://www.twitch.tv/*
  62. // @grant none
  63. // ==/UserScript==
  64.  
  65. var targetNode=document.body;
  66. var matchSelector="object[type='application/x-shockwave-flash']";
  67. var onMatch=function(node){
  68. var wmodeParam=node.querySelector("object>param[name='wmode']");
  69. if(wmodeParam){
  70. wmodeParam.value="direct";
  71. //node.classList.add("userscript-patch---wmode-direct");
  72. //observer.disconnect();
  73. return true;
  74. }
  75. };
  76. var MutationObserver=window.MutationObserver;
  77. var observer = new MutationObserver(function(mutations) {
  78. mutations.some(function(mutation){
  79. var addedNodes=Array.from(mutation.addedNodes||[]);
  80. return addedNodes.some(function(node){
  81. if(node.nodeType!==Node.ELEMENT_NODE)return;
  82. if(!node.mozMatchesSelector(matchSelector))return;
  83. return onMatch(node);
  84. });
  85. });
  86. });
  87. var options={childList: true, subtree: true};
  88. observer.observe(targetNode, options);