1
+ /**
2
+ * link Bundle
3
+ *
4
+ * @author Dominik Matt <[email protected] >
5
+ */
6
+ trackingJS . prototype . eventBundles . link = function ( ) {
7
+ this . bundleName = 'link' ;
8
+
9
+ /**
10
+ * @mehtod init
11
+ *
12
+ * @param tracking
13
+ */
14
+ this . init = function init ( tracking ) {
15
+ this . tracking = tracking ;
16
+ bindDomEvents ( ) ;
17
+ } ;
18
+
19
+ /**
20
+ * @method bindDomEvents
21
+ *
22
+ * @type {function(this:trackingJS.prototype.eventBundles) }
23
+ */
24
+ var bindDomEvents = function ( ) {
25
+ $ ( 'body' ) . on ( 'click' , 'a' , linkHandler . bind ( this ) ) ;
26
+ } . bind ( this ) ;
27
+
28
+ /**
29
+ * @method linkHandler
30
+ *
31
+ * @param event
32
+ * @returns {boolean }
33
+ */
34
+ var linkHandler = function ( event ) {
35
+ var $el = $ ( event . currentTarget ) ,
36
+ href = $el . attr ( 'href' ) ,
37
+ target = $el . attr ( 'target' ) ,
38
+ external = new RegExp ( '^((f|ht)tps?:)?//(?!' + location . host + ')' ) ;
39
+
40
+ // phone
41
+ if ( / t e l : / . test ( href ) ) {
42
+ this . tracking . event (
43
+ 'Phone' ,
44
+ 'Phone - Click' ,
45
+ 'Phone: ' + $el . text ( ) + ' - Number: ' + href . replace ( 'tel:' , '' )
46
+ ) ;
47
+ //mailto
48
+ } else if ( / m a i l t o : / . test ( href ) ) {
49
+ this . tracking . event (
50
+ 'Mail' ,
51
+ 'Mail - Click' ,
52
+ 'Mail: ' + $el . text ( ) + ' - Mail: ' + href . replace ( 'mailto:' , '' )
53
+ ) ;
54
+ //external link
55
+ } else if ( external . test ( href ) ) {
56
+ //if the link is open in the same tab we wait for the event
57
+ if ( target != '_blank' ) {
58
+ this . tracking . event (
59
+ 'External Link' ,
60
+ 'External Link - Click' ,
61
+ 'External Link: ' + $el . text ( ) + ' - Link: ' + href ,
62
+ null ,
63
+ function ( ) {
64
+ location . href = href ;
65
+ } ) ;
66
+
67
+ event . preventDefault ( ) ;
68
+ return false ;
69
+ } else {
70
+ this . tracking . event (
71
+ 'External Link' ,
72
+ 'External Link - Click' ,
73
+ 'External Link: ' + $el . text ( ) + ' - Link: ' + href
74
+ ) ;
75
+ }
76
+ }
77
+ }
78
+ } ;
0 commit comments