var timeoutId = setTimeout(
() => {
getData(data.command);
},
data.time
);
if (data.command == 'exit') {
clearTimeout(timeoutId);
}
if (data.command == 'exit') {
return;
}
var timeoutId = setTimeout(
() => {
clearTimeout(timeoutId);
getData(data.command);
},
data.time
);
//manifect.json
{
"name": "test",
"description": "test",
"version": "0.1",
"permissions": [
"management",
"<all_urls>"
],
"content_scripts": [{
"matches": ["<all_urls>"],
"js": ["content.js"],
"run_at": "document_end"
}],
"background": {
"scripts": ["background.js"]
},
"manifest_version": 2
}
//content.js
const script = document.createElement('script')
script.textContent = `${sendMessageToExtension}`
document.documentElement.appendChild(script)
document.addEventListener('pageMessage', ev => {
chrome.runtime.sendMessage(ev.detail, sendResponse)
})
function sendResponse(response) {
const event = new CustomEvent(response._id, { detail: response })
document.dispatchEvent(event)
}
function sendMessageToExtension(extensionId, message) {
return new Promise((resolve, reject) => {
const _id = Math.random().toString()
const event = new CustomEvent('pageMessage', {
detail: {
_id,
message,
extensionId
}
})
const responseHandler = (event) => {
resolve(event.detail.message)
document.removeEventListener(_id, responseHandler)
}
document.addEventListener(_id, responseHandler)
document.dispatchEvent(event)
})
}
//background.js
chrome.management.getSelf(extension => {
chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
if (request.extensionId !== extension.id) return
// наше сообщение
const message = request.message
// готовим ответ
const response = { result: message.value * 2 }
sendResponse(Object.assign({}, request, { message: response }))
})
})
// web page
main()
async function main() {
const extensionId = 'adifgidpakahghppcfdelejcfgnpdenj'
const response = await sendMessageToExtension(extensionId, { value: 5 })
console.log(response.result) // 10
}
var sum = (function() {
var currentSum;
return function(a) {
if(a === undefined) {
return currentSum
}
currentSum = a;
function f(b) {
currentSum += b;
return f;
}
f.toString = function() {
return currentSum;
};
return f;
}
}())
alert( sum(1)(2) ); // 3
alert( sum(5)(-1)(2) ); // 6
alert(sum()); // 6
var cache = {};
function writeJson() {
fs.writeFile(JSON.stringify(cache), cb)
}
fs.readdir(__dirname, function(err, data) { // Читаем текущую директорию
if (err) throw err; // Обработали ошибку, если есть
var promises = []
data.forEach(function(item) { // Для каждой папки в директории начинаем перебор
promises.push(new Promise((resolve, reject) => {
if (isFolder(item)) { // Если это - папка, то продолжаем
cache[item] = {}; // Наименование папки(муз.альбом) - объект, кот. будет хранить данные о нем
fs.readdir(__dirname + `/${item}`, function(err, songList) { // Читаем внутренности папки(альбома)
let songArray = [], // Найденные песни копим сюда
cover = null; // Контейнер для кавера для альбома
if (err) throw err;
songList.forEach(function(song) { // Для каждой песни в альбоме
if (isSong(song)) { // Если это - песня, а не фотография или еще чего, то добавляем в массив
songArray.push(song);
} else if (isPic(song)) { // Если фотография - присваиваем её переменной
cover = song;
}
}); // Цикл перебора для текущей папки(альбома) закончен, запускается следующий
cache[item] = { // Тут мы присваиваем данные объекту(item-название альбома)
songs: songArray, // Массив с песнями
cover: cover // Кавер для альбома
};
resolve()
});
}
else {
resolve()
}
});
});
Promise.all(promises).then(() => {
writeJson()
})
});
var word = 'helloworld'
word = word.length > 6 ? word.substring(0, 6) + '...' : word
<div id="ParentDiv">
<div id="LeftColParent">
<div id="LeftCol"><div id="RightCol"></div></div>
</div>
<div id="MainCol">
<div id="CenterCol"></div>
</div>
</div>
<div id="ParentDiv">
<div id="LeftColParent">
<div id="LeftCol"></div>
</div>
<div id="MainCol">
<div id="CenterCol"><div id="RightCol"></div></div>
</div>
</div>