Подмена js на странице до запуска скрипта
Всем привет! Может быть нубский вопрос, но...
В общем, есть сайт. На его странице подгружается внешний js, где есть интересная мне процедура. Допустим, такая:
function(locale) {
var localeSplit = locale.split(":");
language = localeSplit.length > 1 ? localeSplit[1] : 'English';
var key = "runtime:" + language
if (language != "English" && language) {
translationService.getTranslationData(locale).success(function(translations) {
if (localStorage.getItem(key)) {
var json = JSON.parse(localStorage.getItem(key))
translations = _.extend(translations, json)
}
localStorage.setItem(key, JSON.stringify(translations))
gettextCatalog.setStrings(language, translations);
gettextCatalog.setCurrentLanguage(language);
})
}
}
Все, что мне нужно, это в переменную locale вписать значение "en-GB:Russian" в начале функции. Сделать так, чтобы скрипт отработал уже после моего изменения. Как мне это сделать? В дебаггере проверил - все работает, но как изменить функцию на постоянной основе? Может быть, с помощью расширения или ..? |
Перед скриптом:
var _originSplit = ''.split; String.prototype.split = Array.bind(null, 'en-GB', 'Russian'); После скрипта: String.prototype.split = _originSplit; _originSplit = null; Но если где-то внутри используется split, то может всё сломаться. |
Цитата:
|
|
Цитата:
|
|
Примерно так:
// ==UserScript==
// @name Replace locale
// @include http*!**/!*://site.com/*
// @grant none
// @run-at document-start
// ==/UserScript==
if(typeof unsafeWindow === 'undefined') unsafeWindow = window;
unsafeWindow.String.prototype.split = function(split){
return function(separator){
if(separator === ':' && this === 'English'){ //если разделитель ":" и строка нужная нам
unsafeWindow.String.prototype.split = split; // возвращаем на место стандартный метод
return ['en-GB', 'Russian']; // отдаём нужные значения
}
return split.apply(this, arguments); // иначе отдаём результат стандартного метода
}
}(unsafeWindow.String.prototype.split)
|
| Часовой пояс GMT +3, время: 08:53. |