X-Git-Url: https://git.ao2.it/GM_direct_download_links.git/blobdiff_plain/5acbbffe01cfc5d603dbfc5177b092a879286a75..f554502458ae33cf241386e89f9ec32b35915dba:/direct_download_links.user.js diff --git a/direct_download_links.user.js b/direct_download_links.user.js index d430887..fdf6ece 100644 --- a/direct_download_links.user.js +++ b/direct_download_links.user.js @@ -53,6 +53,12 @@ * * * Optional fields: + * + * initCommand: a function called before the regExp is matched, this can + * be useful in cases when some action needs to be done in + * order to make the element containing the regExp be actually + * rendered. It must accept a 'site' parameter. + * * onEvent: used to delay the urlRegexp matching to a certain event like * 'DOMNodeInserted' useful when the URL is added by some javascript * library. It has two fields: @@ -109,6 +115,9 @@ for (i = 0; i < supported_sites.length; i++) { var result = window.location.href.match(site.locationRegexp); if (result) { + if (site.initCommand) { + site.initCommand(site); + } direct_download_link_add(window.location.href, site); } } @@ -140,6 +149,7 @@ function direct_download_link_add(pageURL, site) { } _get_URL(site, element); }, false); + return; } _get_URL(site, element); @@ -185,16 +195,24 @@ function _add_link(e) { return; } - var download_link = document.createElement('a'); - download_link.textContent = 'Direct Link'; - download_link.setAttribute('href', URL); - var style = 'background-color: white; color: blue;'; - style += ' border: 2px solid red;' - style += ' float: right; font-size: large;'; - style += ' padding: .5em; margin: 1em;' - download_link.setAttribute('style', style); - - destination.insertBefore(download_link, destination.firstChild); + // Check if we added the link already, if so just update the href attribute. + // This is useful when _get_URL() is called on async events. + var download_link = document.getElementById('GM_direct_downaload_link'); + if (download_link) { + download_link.setAttribute('href', URL); + } else { + download_link = document.createElement('a'); + download_link.textContent = 'Direct Link'; + download_link.setAttribute('id', 'GM_direct_downaload_link'); + download_link.setAttribute('href', URL); + var style = 'background-color: white; color: blue;'; + style += ' border: 2px solid red;' + style += ' float: right; font-size: large;'; + style += ' padding: .5em; margin: 1em;' + download_link.setAttribute('style', style); + + destination.insertBefore(download_link, destination.firstChild); + } } function DDL_log(message) {