Tình hình là e muốn có một addon đếm số lần truy cập vào một url nào đó được list trước, lang thang trong store cả buổi cũng tìm đc một cái về edit và chạy ngon lành nhưng vấn đề là khi cái url em cần đếm được iframe vào một trang khác thì addon nó ko đếm đc nữa, e đã thử set all_frames => true như trong file manifest.json nhưng vẫn ko đc, thánh nào rành cái này xem giúp e với e cảm ơn trước và có hậu tạ
manifest.json:
background.js:
counter.js:
manifest.json:
Code:
{
"background": {
"persistent": true,
"scripts": [ "jquery.js", "counter.js", "background.js" ]
},
"browser_action": {
"default_icon": "icon.png",
"default_popup": "counter.html"
},
"description": "Counter",
"key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAgrQn46/0KFBVFH0l9mKUXPOns5h0YMQ0isRXkB/GzK1h8JfvILDuxkIC7jbyePzMgbY0b8TO7L7FR3m4qcnPJZemz2yrGnHOkppaOWaAuyJm2cQeOul89qNPsC1GROoKfBmajag5OaOr02y4de3MEKSTubtjlO5crbg8xKnp7nHbqkeIq9MOMsEo0/uOQMqvixMnIAfPamUPOQfqmG2lUeo9UgTUoFBaxpf5VhgcuDcLHnkkSrzRrL0DoYeYFqyXwGmiCdvmwkWF+Eax/+s2xGemqMSUj0mrMxzz8KfoWuAWn9pcXYMEINSelIwS/x+wf+NWWmsCY0pV9yF54+vprQIDAQAB",
"manifest_version": 2,
"name": "counter",
"content_scripts": [
{
"matches": ["https://mmo4me.com/*"],
"css": ["app.css"],
"js": ["jquery.js", "counter.js","background.js"],
"all_frames": true
}
],
"permissions": [ "tabs", "history", "background", "webNavigation", "http://*/*", "activeTab" ],
"update_url": "https://clients2.google.com/service/update2/crx",
"version": "0.4"
}
background.js:
Code:
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
// Get chrome history
chrome.history.search({text: '', maxResults: 1}, function(data) {
data.forEach(function(page) {
var dateObj = new Date(page.lastVisitTime);
var dateString = dateStringForDate(dateObj);
// Display last page visit
var pageUrl = page.url;
// Set value to 0 on first load
if (localStorage.getItem("dayCount-" + dateString) === null) {
localStorage.setItem("dayCount-" + dateString, JSON.stringify([]));
}
// Check if last page contains facebook.com
if (pageUrl.indexOf("mmo4me.com") > -1) {
appendUrlForDay(pageUrl, dateString);
}
chrome.browserAction.setBadgeText({ text: countForToday().toString() });
});
});
});
counter.js:
Code:
$(document).ready(function(){
// Display day count
$('.day-count').text(countForToday());
// Display yesterday count
var yesterdayToday = new Date();
var yesterday = new Date(yesterdayToday.setDate(yesterdayToday.getDate() - 1));
var yesterdayString = dateStringForDate(yesterday);
var yesterdayCount = countForDay(yesterdayString);
$('.yesterday-count').text(yesterdayCount);
// Display last 7 days
var weeklyTotal = countForDaysFromToday(7);
$('.week-count').text(weeklyTotal);
// Display last 28 days
var monthlyTotal = countForDaysFromToday(28);
$('.month-count').text(monthlyTotal);
// Total
var total = 0;
for (var i = 0; i < localStorage.length; i++){
var key = localStorage.key(i);
if (key.indexOf("dayCount") > -1) {
var entry = JSON.parse(localStorage.getItem(key));
total += entry.length;
}
}
$('.all-count').text(total);
chrome.browserAction.setBadgeBackgroundColor({ color: '#3BAFDA' });
});
function countForToday() {
// Display day count
var today = new Date();
var todayString = dateStringForDate(today);
var todayCount = countForDay(todayString);
return todayCount;
}
function appendUrlForDay(pageUrl, dateString) {
// get
var currentUrls = urlsForDay(dateString);
// append
var found = false;
for(var i = 0; i < currentUrls.length; i++) {
if (currentUrls[i] == pageUrl) {
found = true;
break;
}
}
if (!found) {
currentUrls.push(pageUrl);
}
// set
localStorage.setItem("dayCount-" + dateString, JSON.stringify(currentUrls));
}
function dateStringForDate(dateObj) {
var month = dateObj.getUTCMonth() + 1;
var day = dateObj.getUTCDate();
var year = dateObj.getUTCFullYear();
var dateString = year + "/" + month + "/" + day;
return dateString;
}
function countForDaysFromToday(number_of_days) {
console.log(number_of_days);
var total = 0;
for (var i = 0; i < number_of_days; i++) {
var today = new Date();
var dayToLookup = new Date(today.setDate(today.getDate() - i));
var dayString = dateStringForDate(dayToLookup);
var dayCount = countForDay(dayString);
total += dayCount;
}
return total;
}
function urlsForDay(dateString) {
var item = localStorage.getItem("dayCount-" + dateString);
return JSON.parse(item);
}
function countForDay(dateString) {
var currentUrls = urlsForDay(dateString);
if (currentUrls != null) {
return currentUrls.length;
} else {
return 0;
}
}