[need help] chrome extension không làm việc với iframe

vitomxau

Banned
Joined
Jun 24, 2013
Messages
433
Reactions
120
MR
0.000
Call me! Call me! Chat with me via Yahoo Messenger Follow me on Facebook Chat with me via Skype
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ạ :D

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;
  } 
}
 

Announcements

Today's birthdays

Forum statistics

Threads
426,383
Messages
7,176,328
Members
178,832
Latest member
soicau247viptv

Most viewed of week

Most viewed of week

Back
Top Bottom