@@ -2436,6 +2436,25 @@ var Gmail = function(localJQuery) {
2436
2436
api . tracker . custom_dom_observers [ action ] = config ;
2437
2437
} ;
2438
2438
2439
+
2440
+ var preventGmailJacking = function ( ) {
2441
+ // prevent gmail jacking our click-events!
2442
+
2443
+ // install event-handler only once!
2444
+ if ( ! api . tracker . jackPreventionInstalled ) {
2445
+ window . addEventListener ( "click" , ( e ) => {
2446
+ const realTarget = e . path [ 0 ] ;
2447
+ const gmailJsButton = realTarget . querySelector ( ".gmailjs" ) ;
2448
+ if ( gmailJsButton ) {
2449
+ gmailJsButton . click ( ) ;
2450
+ e . preventDefault ( ) ;
2451
+ }
2452
+ } ) ;
2453
+ api . tracker . jackPreventionInstalled = true ;
2454
+ }
2455
+ } ;
2456
+
2457
+
2439
2458
/**
2440
2459
Observe DOM nodes being inserted. When a node with a class defined in api.tracker.dom_observers is inserted,
2441
2460
trigger the related event and fire off any relevant bound callbacks
@@ -2498,14 +2517,18 @@ var Gmail = function(localJQuery) {
2498
2517
// wait until the gmail interface has finished loading and then
2499
2518
// execute the passed handler. If interface is already loaded,
2500
2519
// then will just execute callback
2501
- if ( api . dom . inbox_content ( ) . length ) return callback ( ) ;
2520
+ if ( api . dom . inbox_content ( ) . length ) {
2521
+ preventGmailJacking ( ) ;
2522
+ return callback ( ) ;
2523
+ }
2502
2524
var load_count = 0 ;
2503
2525
var delay = 200 ; // 200ms per check
2504
2526
var attempts = 50 ; // try 50 times before giving up & assuming an error
2505
2527
var timer = setInterval ( function ( ) {
2506
2528
var test = api . dom . inbox_content ( ) . length ;
2507
2529
if ( test > 0 ) {
2508
2530
clearInterval ( timer ) ;
2531
+ preventGmailJacking ( ) ;
2509
2532
return callback ( ) ;
2510
2533
} else if ( ++ load_count > attempts ) {
2511
2534
clearInterval ( timer ) ;
@@ -3412,7 +3435,7 @@ var Gmail = function(localJQuery) {
3412
3435
container . attr ( "class" , "G-Ni J-J5-Ji" ) ;
3413
3436
3414
3437
var button = $ ( document . createElement ( "div" ) ) ;
3415
- var buttonClasses = "T-I J-J5-Ji " ;
3438
+ var buttonClasses = "T-I J-J5-Ji gmailjs " ;
3416
3439
if ( styleClass !== undefined &&
3417
3440
styleClass !== null &&
3418
3441
styleClass !== "" ) {
@@ -3451,7 +3474,7 @@ var Gmail = function(localJQuery) {
3451
3474
3452
3475
api . tools . add_compose_button = function ( composeWindow , content_html , onClickFunction , styleClass ) {
3453
3476
var button = $ ( document . createElement ( "div" ) ) ;
3454
- var buttonClasses = "T-I J-J5-Ji aoO T-I-atl L3 gmailjscomposebutton " ;
3477
+ var buttonClasses = "T-I J-J5-Ji aoO T-I-atl L3 gmailjs gmailjscomposebutton " ;
3455
3478
if ( styleClass !== undefined ) {
3456
3479
buttonClasses += styleClass ;
3457
3480
}
0 commit comments