1/*globals jQuery, icl_vars, wpml_xdomain_data */ 2 3(function () { 4 "use strict"; 5 6 jQuery(function () { 7 jQuery('.' + wpml_xdomain_data.css_selector + ' a').on('click', function (event) { 8 9 var originalUrl; 10 var currentUrl = window.location.href; 11 var targetUrl = jQuery(this).attr('href'); 12 13 if ('#' !== targetUrl && currentUrl !== targetUrl) { 14 event.preventDefault(); 15 16 originalUrl = jQuery(this).attr('href'); 17 // Filter out xdomain_data if already in the url 18 originalUrl = originalUrl.replace(/&xdomain_data(=[^&]*)?(?=&|$)|xdomain_data(=[^&]*)?(&|$)/, ''); 19 originalUrl = originalUrl.replace(/\?$/, ''); 20 21 /** @namespace icl_vars.current_language */ 22 jQuery.ajax({ 23 url: wpml_xdomain_data.ajax_url, 24 type: 'post', 25 dataType: 'json', 26 data: { 27 action: 'switching_language', 28 from_language: wpml_xdomain_data.current_language, 29 _nonce: wpml_xdomain_data._nonce, 30 }, 31 success: function (response) { 32 var argsGlue; 33 var url; 34 var hash; 35 var urlSplit; 36 var xdomain; 37 var form; 38 39 if (response.data.xdomain_data) { 40 if (response.success) { 41 if ('post' === response.data.method) { 42 43 // POST 44 form = jQuery('<form method="post" action="' + originalUrl + '" >'); 45 xdomain = jQuery('<input type="hidden" name="xdomain_data" value="' + response.data.xdomain_data + '">'); 46 47 form.append(xdomain); 48 jQuery('body').append(form); 49 50 form.submit(); 51 52 } else { 53 // GET 54 urlSplit = originalUrl.split('#'); 55 hash = ''; 56 if (1 < urlSplit.length) { 57 hash = '#' + urlSplit[1]; 58 } 59 url = urlSplit[0]; 60 if (url.indexOf('?') === -1) {argsGlue = '?';} else {argsGlue = '&';} 61 /** @namespace response.data.xdomain_data */ 62 url = originalUrl + argsGlue + 'xdomain_data=' + response.data.xdomain_data + hash; 63 location.href = url; 64 } 65 66 } else { 67 url = originalUrl; 68 location.href = url; 69 } 70 } else { 71 location.href = originalUrl; 72 } 73 }, 74 error: function () { 75 location.href = originalUrl; 76 } 77 }); 78 } 79 }); 80 }); 81}());
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.