User Tools

Site Tools


protocol_handler_events

As usual, load this in commit handler. window.handle_link_external can be called on its own - or by clicking such a link. Escapes ”@” !

(function() {
	var run = Uzbl.run;
	delete self.Uzbl;
	var escape = self.escape;
	var String_methods = {
		replace: String.prototype.replace,
		slice: String.prototype.slice,
		match: String.prototype.match
	};

	window.handle_link_external = function(element) {
			var protocol = element.protocol;
			href = element.href;
			href=href.replace("@", "\\@");
			run("event LINK_" + protocol.toUpperCase().replace(":", " ") + href);
	}
	 
	var protocol_handler = function(event) {
		var element = event.target;
		if (event.button === 0 && element.nodeName === "A") {
			var protocol = element.protocol;
			if (!String_methods.match.call(protocol, /^(https?|javascript):$/)) {
				event.stopPropagation();
				event.preventDefault();
				window.handle_link_external(element);
			}
		}
	};
 
	window.addEventListener("click", protocol_handler, false);
})();
 
// vim: set noet ff=unix
protocol_handler_events.txt · Last modified: 2016/08/31 14:10 (external edit)