Добрый день. Помогите,пожалуйста, советом. Пишу расширение для хрома, которое бы заменяло слова на сайтах на те, которые прописаны у меня в файле.
В файле dictionaries содержатся слова: 1 колонка - что заменить, 2 колонка -на что заменить. Пример:
var dictionary={
"replacements": {
"TEX1" : "arb",
"Opera" : "Не опера",
"Маша" : "Мария" и т.д.
Так вот, с нахождением англ слов и заменой на англ - расширение справляется. С нахождением англ слов и заменой на ру - тоже. Но "Маша" : "Мария" он заменять отказывается, как и другие слова "ру на ру".
Привожу пример кода background.HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!-- Тег meta для указания кодировки -->
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<head>
<title>Background Page</title>
<script src="dictionaries/original.js"></script>
<script src="background.js"></script>
</head>
<body>
</body>
</html>
___
dictionaries/original.js - тут лежат слова для замены с заменой.
__
файл background.js" показан ниже:
(function() {
var ONE_DAY = 1000 * 60 * 60 * 24;
var KEY_LAST_CHANGED_AT = 'lastChangedAt';
var KEY_OPTIONS = 'options';
var KEY_PAUSED = 'paused';
var _alreadyQueued = false;
function now() {
return new Date().getTime();
}
function checkForRandomSwap() {
var lastChangedAt, pollTimeout;
var options = JSON.parse(localStorage.getItem(KEY_OPTIONS));
if(options && options.checkDaily) {
lastChangedAt = parseInt(localStorage.getItem(KEY_LAST_CHANGED_AT), 10);
//не вносились изменения
if(isNaN(lastChangedAt) || lastChangedAt + ONE_DAY < now()) {
var pause = Math.random() > 0.5; // Flip a coin!
lastChangedAt = setPaused(pause);
}
// Set up the next check.
if(!_alreadyQueued) {
pollTimeout = (lastChangedAt + ONE_DAY) - now();
setTimeout(function() {
_alreadyQueued = false;
checkForRandomSwap();
}, pollTimeout);
_alreadyQueued = true;
}
}
}
function updateBadge(paused) {
var badgeText = paused ? "OFF" : "";
chrome.browserAction.setBadgeText( { text: badgeText } );
}
function isPaused() {
return (localStorage.getItem(KEY_PAUSED) == 'true');
}
function setPaused(paused) {
var lastChangedAt = now();
localStorage.setItem(KEY_PAUSED, paused);
chrome.storage.sync.set( { 'paused': paused } );
updateBadge(paused);
localStorage.setItem(KEY_LAST_CHANGED_AT, lastChangedAt);
return lastChangedAt;
}
function togglePause(tab) {
setPaused(!isPaused());
// Reload the current tab.
chrome.tabs.update(tab.id, {url: tab.url});
}
function getExcluded() {
var opts = JSON.parse(localStorage.getItem(KEY_OPTIONS));
return opts ? opts['excluded'] : [];
}
function onMessage(request, sender, sendResponse) {
var requestId = request.id;
if(requestId == 'isPaused?') {
// TODO: Convert to boolean.
sendResponse({value: isPaused()});
}
else if(requestId == 'getExcluded') {
sendResponse({value: getExcluded()});
}
else if(requestId == 'setOptions') {
localStorage.setItem(KEY_OPTIONS, request.options);
}
else if(requestId == 'getDictionary') {
sendResponse(dictionary);
}
}
chrome.browserAction.onClicked.addListener(togglePause);
chrome.extension.onRequest.addListener(onMessage);
updateBadge(isPaused());
checkForRandomSwap();
})();