PageSourceSearch

https://wjsunstone.com/wp-content/cache/wjsunstone.com/wpfc-minified/f10p101j/c7bkk.js

js wjsunstone.com collected 2026-10-10 02:17:56 UTC 3,491 bytes, 125 lines download raw bytes

1// source --> https://wjsunstone.com/wp-content/plugins/sitepress-multilingual-cms/res/js/xdomain-data.js?ver=491900 
2/*globals icl_vars, wpml_xdomain_data */
3
4var WPMLCore = WPMLCore || {};
5
6WPMLCore.XdomainData = function() {
7	this.links = document.querySelectorAll('.' + wpml_xdomain_data.css_selector + ' a');
8
9	var self = this;
10
11	for(var i = 0; i < this.links.length; i++) {
12		this.links[i].addEventListener('click', function(e) {
13			var link = self.getClosestLink(e.target);
14			var currentUrl = window.location.href;
15			var targetUrl = link.getAttribute('href');
16
17			if ('#' !== targetUrl && currentUrl !== targetUrl) {
18				e.preventDefault();
19				self.onLinkClick(link);
20			}
21		});
22	}
23};
24
25WPMLCore.XdomainData.prototype = {
26	getClosestLink: function(maybeLink) {
27		var tagName = maybeLink.nodeName.toLowerCase();
28		if(tagName === 'a') {
29			return maybeLink;
30		}
31
32		return this.getClosestLink(maybeLink.parentNode);
33	},
34
35	onLinkClick: function(link) {
36		var self = this;
37		var originalUrl = link.getAttribute('href');
38		// Filter out xdomain_data if already in the url
39		originalUrl = originalUrl.replace(/&xdomain_data(=[^&]*)?(?=&|$)|xdomain_data(=[^&]*)?(&|$)/, '');
40		originalUrl = originalUrl.replace(/\?$/, '');
41
42		var data = {
43			action:        'switching_language',
44			from_language: wpml_xdomain_data.current_language,
45			_nonce:        wpml_xdomain_data._nonce,
46		};
47		var params = [];
48		for(var prop in data) {
49			if(typeof data[prop] !== 'undefined') {
50				params.push(encodeURIComponent(prop) + '=' + encodeURIComponent(data[prop]));
51			}
52		}
53		params = params.join('&', params);
54
55		/** @namespace icl_vars.current_language */
56		var req = new XMLHttpRequest();
57		req.open("POST", wpml_xdomain_data.ajax_url);
58		req.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
59		req.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
60		req.setRequestHeader('Accept', 'application/json, text/javascript, */*; q=0.01');
61
62		req.onload = function() {
63			const response = JSON.parse(req.response);
64			self.onSuccess(response, originalUrl);
65		};
66		req.onerror = function() {
67			location.href = originalUrl;
68		};
69
70		req.send(params);
71	},
72
73	onSuccess: function(response, originalUrl) {
74		var argsGlue;
75		var url;
76		var hash;
77		var urlSplit;
78		var xdomain;
79		var form;
80
81		if (response.data.xdomain_data) {
82			if (response.success) {
83				if ('post' === response.data.method) {
84
85					// POST
86					form = document.createElement('form');
87					form.setAttribute('method', 'post');
88					form.setAttribute('action', originalUrl);
89					xdomain = document.createElement('input');
90					xdomain.setAttribute('type', 'hidden');
91					xdomain.setAttribute('name', 'xdomain_data');
92					xdomain.setAttribute('value', response.data.xdomain_data);
93
94					form.appendChild(xdomain);
95					document.body.appendChild(form);
96
97					form.submit();
98
99				} else {
100					// GET
101					urlSplit = originalUrl.split('#');
102					hash = '';
103					if (1 < urlSplit.length) {
104						hash = '#' + urlSplit[1];
105					}
106					url = urlSplit[0];
107					if (url.indexOf('?') === -1) {argsGlue = '?';} else {argsGlue = '&';}
108					/** @namespace response.data.xdomain_data */
109					url = originalUrl + argsGlue + 'xdomain_data=' + response.data.xdomain_data + hash;
110					location.href = url;
111				}
112
113			} else {
114				url = originalUrl;
115				location.href = url;
116			}
117		} else {
118			location.href = originalUrl;
119		}
120	},
121};
122
123document.addEventListener('DOMContentLoaded', function() {
124	var xd = new WPMLCore.XdomainData();
125});

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.