Changeset View
Changeset View
Standalone View
Standalone View
webroot/rsrc/js/core/behavior-linked-container.js
- This file was added.
| /** | |||||
| * @provides javelin-behavior-linked-container | |||||
| * @requires javelin-behavior javelin-dom | |||||
| */ | |||||
| JX.behavior('linked-container', function() { | |||||
| JX.Stratcom.listen( | |||||
| 'click', | |||||
| 'linked-container', | |||||
| function(e) { | |||||
| // If the user clicked some link inside the container, bail out and just | |||||
| // click the link. | |||||
| if (e.getNode('tag:a')) { | |||||
| return; | |||||
| } | |||||
| // If this is some sort of unusual click, bail out. Note that we'll | |||||
| // handle "Left Click" and "Command + Left Click" differently, below. | |||||
| if (!e.isLeftButton()) { | |||||
| return; | |||||
| } | |||||
| var container = e.getNode('linked-container'); | |||||
| // Find the first link in the container. We're going to pretend the user | |||||
| // clicked it. | |||||
| var link = JX.DOM.scry(container, 'a')[0]; | |||||
| if (!link) { | |||||
| return; | |||||
| } | |||||
| // If the click is a "Command + Left Click", change the target of the | |||||
| // link so we open it in a new tab. | |||||
| var is_command = !!e.getRawEvent().metaKey; | |||||
| if (is_command) { | |||||
| var old_target = link.target; | |||||
| link.target = '_blank'; | |||||
| link.click(); | |||||
| link.target = old_target; | |||||
| } else { | |||||
| link.click(); | |||||
| } | |||||
| }); | |||||
| }); | |||||