*
*
* 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:
var result = window.location.href.match(site.locationRegexp);
if (result) {
+ if (site.initCommand) {
+ site.initCommand(site);
+ }
direct_download_link_add(window.location.href, site);
}
}
}
_get_URL(site, element);
}, false);
+ return;
}
_get_URL(site, element);
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) {