Autor | Zpráva | ||
---|---|---|---|
weroro Profil |
Ahoj,
pre jedno diskusné fórum, som si napísal greaseMonkey script rozšírenie (userscript) na prehrávanie videí z youtube priamo v príspevku. Daný script mi funguje v Opere 12.16 bez problému, ale vo firefoxe cez rozšírenie grease monkey nereagujú onclick udalosti. Mohli by ste prosím skúsiť analyzovať kde by mohol byť problém? Pre FF som US nevytváral dlho, tak je možné, že je tam nejaká bezpečnostná zrada. if (!ytip) { var ytip = { width : 560, height : 315, autoplay : true, wmode : false, lang : { createTitle : 'Prehrať video v príspevku', destroyTitle : 'Zatvoriť video' }, styles : { createStyle : 'display:block;width:36px;height:24px;background:#ccc url(\'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAaUlEQVR42mNgGAWjYMSD/wMMBo8DBirkSXYAUOl8IBYYSAeAwHsgLhhIB4DBv3//7gMphwFzAJJD9gMphQFzABLoJzZ9DC8HDFgUDGQiHNBsOLAFEc2K4tHacMjUhqNpgOoOGAWjYMQDAD4roOvLuhuEAAAAAElFTkSuQmCC\') scroll center center no-repeat;', destroyStyle : 'padding:5px 20px;background: url(\'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAUCAYAAAAHpoRMAAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAAABAAAAAQBPJcTWAAAAB3RJTUUH3gEFBhACTh8BsgAAA89JREFUeJzVlVtII2cUgM9kLpqMEcl42YWEICTWYFj6EEphoUkllZUW+rIgBo2Xoii20KeoSLRSHzQFtT6paX1Zle2NPiiCaNRFmhIRKgjZQJuV3cWKE0nDZDK5TCbTh85IGqxbNulDDxwG/n/O+b//3H6A/6tks1k0GAzeGx8fn7FYLL9QFBUlCCKNYViWIIi0RqOJWiyWE7fbPRMMBu9ls1n0PwFJJBIVS0tLnxiNxmcKhUIAgNw/qUKhEIxG49ni4uKnLMtWlBSEZVm12+32VFRUJKQDxX+hOZIkE2NjY1/E4/HKkoDwPI/Nz8+7VCoVBwAigiACSZJxDMP4mwAIgkiTJHkNrVKpuNnZ2VGe5/GiYY6Pj9/W6XTnIIW/s7Pz2/39/Zbp6ekJiqKikJcevV7/cnl5+ePt7e0P7Hb7E3ldq9X+fnR0dL8okGQyqRoaGvIiCJIDALGyspI5PDx8FwAgnU4TKysrA7W1tREAyBkMhrOtra0P5aJdXV39CMOwLEgRGxgY+KoomEAg8E5jY+OvkkMRwzB+YmJimuM4EgAgk8nga2trPVar9Wefz9cqCIICACAajVb39PSsyZcAALGhoeG3omA8Hs9nJEnGIS8VJEnGp6amPmdZVg3wV03RNH1XEAQEAODq6qpucHDwa4Ig0gV2iaJgurq6HkuF+rfWlbrEU9glNE3f6e3tfYTjeKbQRvJzqyhu2xQE4cahxXGc0u/332cYpip//fLy8k4gEHiL53ms0EYUReRVMLfK5OTkjNTS1zdEEESwWq3+09PTN/OgEemrODg4eK+pqSkEBZFRKpXJomD29vYe1NfXP4e8OdLc3HwYCoXM8j/hcPiNhYUFF03Td2Uwv99vNZvNTyFvQOr1+pdFwTAMU9XR0fEN5BXvzs7O+/J+KBQyt7S07JeVlaWdTufji4sLLQBALpdDvF7vEIqiWdnW4XB8VxQMAIDP52utrq6OAoBYXl6e8nq9QyzLqk9OTiw2m+0QQRABAEQURfm2trYfw+FwA8MwVW632yO9YSJFUX/kX+K1JZVKlY+MjMzJHVJTU3Nlt9ufGAyGM2mOXCuKolmz2fzUZrP9pFar4wCQw3E843K5vuQ4Tlk0DABAJBKp6+7uXr+pZW9THMczTqdznabpupKA5AONjo7OSSl71cudoygqOjw8PBeJRGpLCiJLKpUq9/l8DxwOx/c6ne6cIAg5UvKLndFqteft7e0/7O7utiaTydKk5jaJxWKazc3Nh/39/Y9MJtMLiqJ4k8n0oq+vb31jY+NhLBbTvI7fPwG6tu4uirk1xgAAAABJRU5ErkJggg==\') scroll center center no-repeat;' }, createAnchor : 'onclick="return ytip.createInlineYT(this);"', destroyAnchor : 'onclick="return ytip.destroyInlineYT();"', saveContent : new Array(), active : false, restoreContent : function (del) { if (this.saveContent.length > 1) { this.saveContent[0].innerHTML = this.saveContent[1]; this.saveContent[2].innerHTML = this.saveContent[3]; if (del) { this.saveContent = []; } } }, createInlineYT : function (button) { var videoCode = button.parentNode.getElementsByTagName('a')[0].innerHTML.split('&v=')[1]; var ap = (this.autoplay) ? 1 : 0; var wm = (this.wmode) ? 'opaque' : 'window'; var videoYT = '<iframe src="//www.youtube.com/embed/' + videoCode + '?hl=en&fs=1&rel=0&autoplay=' + ap + '&wmode=' + wm + '" width="' + this.width + '" height="' + this.height + '" frameborder="0" allowfullscreen></iframe>'; this.restoreContent(); this.saveContent[0] = button.parentNode.parentNode; this.saveContent[1] = this.saveContent[0].innerHTML; this.saveContent[2] = this.saveContent[0].parentNode.firstChild; this.saveContent[3] = this.saveContent[2].innerHTML; this.saveContent[2].innerHTML = '<a href="' + location.href + '" title="' + this.lang.destroyTitle + '" ' + this.destroyAnchor + ' style="' + this.styles.destroyStyle + '"></a> ' + this.saveContent[3]; this.active = true; this.saveContent[0].innerHTML = videoYT; return !this.active; }, destroyInlineYT : function () { if (this.active) { this.restoreContent(true); this.active = false; } return this.active; }, init : function () { var contentElements, containers; var attachContent = document.getElementsByClassName('attachcontent'); if (attachContent.length < 1) { return false; } for (var i = 0; i < attachContent.length; i++) { contentElements = attachContent[i].getElementsByTagName('div'); containers = []; for (var j = 0; j < contentElements.length; j++) { if (contentElements[j].parentNode == attachContent[i]) { containers.push(contentElements[j]); } } if (containers[1]) { containers[1].innerHTML += '<a href="#" title="' + this.lang.createTitle + '" ' + this.createAnchor + ' style="' + this.styles.createStyle + '"></a>'; } } } } } ytip.init(); Hlavička scriptu vyzerá takto // ==UserScript== // @name Youtube inline player // @description Embedovanie videa do obsahu príspevku // @include http://www.hojko.com/* // @version 1.0 // ==/UserScript== Ďakujem za váš čas. |
||
Chamurappi Profil |
#2 · Zasláno: 6. 1. 2014, 14:11:22
Reaguji na werora:
V diskusi jsem teď našel několik vláken, kde jsem zmiňoval, že někdo zmiňoval, že v UserScriptech se musí na nastavování událostí používat addEventListener , ale nenašel jsem původní zdroj té informace. Něco na tom nejspíš bude…
|
||
_es Profil |
#3 · Zasláno: 6. 1. 2014, 14:16:02
|
||
weroro Profil |
Chamurappi:
addEventListener nereagoval tiež.
_es: Presne toto bol problém. Namiesto innerHTML som to urobil pomocou appendChild() a už je všetko v poriadku, po miernej úprave celého scriptu.
Ďakujem. |
||
Časová prodleva: 10 let
|
0