|
90 | 90 | 'use strict'; |
91 | 91 |
|
92 | 92 | function clickToLoad() { |
93 | | - var QUESTION_MARK = '?'; |
94 | | - var AMPERSAND = '&'; |
95 | | - var SEARCH_PARAMS_DIVIDER = '='; |
96 | | - var ORIGIN_URL_PARAM = '__origin'; |
97 | | - var EXT_UNBLOCK_PARAM = '__unblock'; |
98 | | - var CL_UNBLOCK_PARAM = '__adg_unblock_token'; |
99 | | - var CL_SPECIFIC_UNBLOCK_PARAM = '__adg_unblock'; |
100 | | - var BLOCKING_RULE_PARAM = '__adg_blocking_rule'; |
101 | | - var CLICK_EVENT = 'click'; |
102 | | - var CL_FORCE_EVENT = 'force'; |
103 | | - var neededParams = [ORIGIN_URL_PARAM, EXT_UNBLOCK_PARAM, CL_UNBLOCK_PARAM, BLOCKING_RULE_PARAM]; |
104 | | - var parseSearchParam = function parseSearchParam(rawQueryStr) { |
105 | | - var res = {}; |
106 | | - var pattern = /([^&=]+)=([^&]*)/g; |
107 | | - var matchedData; |
108 | | - var queryStr = rawQueryStr.substring(1); |
| 93 | + const QUESTION_MARK = '?'; |
| 94 | + const AMPERSAND = '&'; |
| 95 | + const SEARCH_PARAMS_DIVIDER = '='; |
| 96 | + const ORIGIN_URL_PARAM = '__origin'; |
| 97 | + const EXT_UNBLOCK_PARAM = '__unblock'; |
| 98 | + const CL_UNBLOCK_PARAM = '__adg_unblock_token'; |
| 99 | + const CL_SPECIFIC_UNBLOCK_PARAM = '__adg_unblock'; |
| 100 | + const BLOCKING_RULE_PARAM = '__adg_blocking_rule'; |
| 101 | + const CLICK_EVENT = 'click'; |
| 102 | + const CL_FORCE_EVENT = 'force'; |
| 103 | + const neededParams = [ORIGIN_URL_PARAM, EXT_UNBLOCK_PARAM, CL_UNBLOCK_PARAM, BLOCKING_RULE_PARAM]; |
| 104 | + const parseSearchParam = function parseSearchParam(rawQueryStr) { |
| 105 | + const res = {}; |
| 106 | + const pattern = /([^&=]+)=([^&]*)/g; |
| 107 | + let matchedData; |
| 108 | + let queryStr = rawQueryStr.substring(1); |
109 | 109 | while (matchedData = pattern.exec(queryStr)) { |
110 | 110 | if (neededParams.indexOf(matchedData[1]) > -1) { |
111 | 111 | res[matchedData[1]] = matchedData[2]; |
|
114 | 114 | } |
115 | 115 | return res; |
116 | 116 | }; |
117 | | - var paramsData = parseSearchParam(window.location.search); |
118 | | - var getParamByKey = function getParamByKey(key) { |
| 117 | + const paramsData = parseSearchParam(window.location.search); |
| 118 | + const getParamByKey = function getParamByKey(key) { |
119 | 119 | return paramsData[key] || ''; |
120 | 120 | }; |
121 | | - var extUnblockToken = getParamByKey(EXT_UNBLOCK_PARAM); |
122 | | - var clUnblockToken = getParamByKey(CL_UNBLOCK_PARAM); |
123 | | - var blockingRule = getParamByKey(BLOCKING_RULE_PARAM); |
124 | | - var originUrl = clUnblockToken |
| 121 | + const extUnblockToken = getParamByKey(EXT_UNBLOCK_PARAM); |
| 122 | + const clUnblockToken = getParamByKey(CL_UNBLOCK_PARAM); |
| 123 | + const blockingRule = getParamByKey(BLOCKING_RULE_PARAM); |
| 124 | + const originUrl = clUnblockToken |
125 | 125 | ? window.location.href : decodeURIComponent(getParamByKey(ORIGIN_URL_PARAM)); |
126 | | - var clickTitleElem = document.getElementById('clickToLoadTitle'); |
127 | | - var clickSubtitleElem = document.getElementById('clickToLoadSubtitle'); |
128 | | - var clickButtonElem = document.getElementById('clickToLoadLink'); |
129 | | - var originUrlToDisplay = clUnblockToken ? originUrl.replace(/[&?]__adg_unblock_token=.*/, '') : originUrl; |
| 126 | + const clickTitleElem = document.getElementById('clickToLoadTitle'); |
| 127 | + const clickSubtitleElem = document.getElementById('clickToLoadSubtitle'); |
| 128 | + const clickButtonElem = document.getElementById('clickToLoadLink'); |
| 129 | + const originUrlToDisplay = clUnblockToken ? originUrl.replace(/[&?]__adg_unblock_token=.*/, '') : originUrl; |
130 | 130 | clickSubtitleElem.textContent = originUrlToDisplay; |
131 | 131 | clickButtonElem.href = originUrlToDisplay; |
132 | 132 | clickButtonElem.title = originUrlToDisplay; |
133 | | - var translationsData = { |
| 133 | + const translationsData = { |
134 | 134 | en: { |
135 | 135 | title: 'Content blocked by AdGuard', |
136 | 136 | button: 'Click to load' |
|
176 | 176 | button: 'Однаково завантажити' |
177 | 177 | } |
178 | 178 | }; |
179 | | - var getTranslations = function getTranslations() { |
180 | | - var baseLocaleData = translationsData.en; |
| 179 | + const getTranslations = function getTranslations() { |
| 180 | + const baseLocaleData = translationsData.en; |
181 | 181 | try { |
182 | | - var currentLocale = navigator.language.toLowerCase(); |
183 | | - var localeData = translationsData[currentLocale]; |
| 182 | + const currentLocale = navigator.language.toLowerCase(); |
| 183 | + let localeData = translationsData[currentLocale]; |
184 | 184 | if (!localeData) { |
185 | | - var lang = currentLocale.split('-')[0]; |
| 185 | + const lang = currentLocale.split('-')[0]; |
186 | 186 | localeData = translationsData[lang]; |
187 | 187 | } |
188 | 188 | if (!localeData) { |
|
193 | 193 | return baseLocaleData; |
194 | 194 | } |
195 | 195 | }; |
196 | | - var translations = getTranslations(); |
| 196 | + const translations = getTranslations(); |
197 | 197 | clickTitleElem.textContent = translations.title; |
198 | 198 | clickButtonElem.textContent = translations.button; |
199 | | - var getReplaceUrl = function getReplaceUrl(originUrl, unblockTokenName, unblockTokenValue) { |
200 | | - var questionMarkIndex = originUrl.indexOf(QUESTION_MARK); |
201 | | - var divider = questionMarkIndex > -1 ? AMPERSAND : QUESTION_MARK; |
| 199 | + const getReplaceUrl = function getReplaceUrl(originUrl, unblockTokenName, unblockTokenValue) { |
| 200 | + const questionMarkIndex = originUrl.indexOf(QUESTION_MARK); |
| 201 | + let divider = questionMarkIndex > -1 ? AMPERSAND : QUESTION_MARK; |
202 | 202 | if (originUrl.substring(questionMarkIndex).length === 1) { |
203 | 203 | divider = ''; |
204 | 204 | } |
205 | 205 | return "".concat(originUrl).concat(divider).concat(unblockTokenName).concat(SEARCH_PARAMS_DIVIDER).concat(unblockTokenValue); |
206 | 206 | }; |
207 | | - var extRun = function extRun() { |
208 | | - var replaceUrl = getReplaceUrl(originUrl, EXT_UNBLOCK_PARAM, extUnblockToken); |
| 207 | + const extRun = function extRun() { |
| 208 | + const replaceUrl = getReplaceUrl(originUrl, EXT_UNBLOCK_PARAM, extUnblockToken); |
209 | 209 | window.location.replace(replaceUrl); |
210 | 210 | }; |
211 | | - var clRun = function clRun() { |
212 | | - var CL_SPECIFIC_UNBLOCK_VALUE = 1; |
213 | | - var replaceUrl = getReplaceUrl(originUrl, CL_SPECIFIC_UNBLOCK_PARAM, CL_SPECIFIC_UNBLOCK_VALUE); |
| 211 | + const clRun = function clRun() { |
| 212 | + const CL_SPECIFIC_UNBLOCK_VALUE = 1; |
| 213 | + const replaceUrl = getReplaceUrl(originUrl, CL_SPECIFIC_UNBLOCK_PARAM, CL_SPECIFIC_UNBLOCK_VALUE); |
214 | 214 | window.location.replace(replaceUrl); |
215 | 215 | }; |
216 | 216 | clickButtonElem.addEventListener(CLICK_EVENT, function (e) { |
|
228 | 228 | clickButtonElem.addEventListener(CL_FORCE_EVENT, function () { |
229 | 229 | clRun(); |
230 | 230 | }); |
231 | | - var hasFrameModifier = function hasFrameModifier(rule) { |
232 | | - var substringAfter = function substringAfter(str, separator) { |
233 | | - var index = str.indexOf(separator); |
| 231 | + const hasFrameModifier = function hasFrameModifier(rule) { |
| 232 | + const substringAfter = function substringAfter(str, separator) { |
| 233 | + const index = str.indexOf(separator); |
234 | 234 | return index < 0 ? '' : str.substring(index + separator.length); |
235 | 235 | }; |
236 | | - var FRAME_MARKER = 'frame'; |
237 | | - var SUBDOCUMENT_MARKER = 'subdocument'; |
238 | | - var ruleModifiers = substringAfter(rule, '$').split(','); |
| 236 | + const FRAME_MARKER = 'frame'; |
| 237 | + const SUBDOCUMENT_MARKER = 'subdocument'; |
| 238 | + const ruleModifiers = substringAfter(rule, '$').split(','); |
239 | 239 | return ruleModifiers.indexOf(FRAME_MARKER) > -1 || ruleModifiers.indexOf(SUBDOCUMENT_MARKER) > -1; |
240 | 240 | }; |
241 | | - var isInsideFrame = function isInsideFrame() { |
| 241 | + const isInsideFrame = function isInsideFrame() { |
242 | 242 | return window.self !== window.top; |
243 | 243 | }; |
244 | 244 | if (clUnblockToken && blockingRule && hasFrameModifier(blockingRule) && !isInsideFrame()) { |
|
0 commit comments