Keep Your Session - Keep your Chromium session for future use


(Hà Hải Nam) #1

Ý tưởng:
Một ngày đẹp trời, khi củ kiệu của bạn thèm bắn súng. Bạn mở tab ẩn danh, tìm kiếm một bộ phim hay, ngon, hiệu quả. Bạn muốn giữ lại link đó để luyện thêm, tuy nhiên không thể bookmark nó vì máy này có người dùng ké, lộ ra là đi… Bạn muốn lưu nó vào một file .exe (rename .txt -> .exe) rồi để trong thư mục “Tài liệu học tập” để tránh bị phát hiện… Sau một thời gian tu luyện, bạn đã tích lũy được lượng EXP khá lớn… Bạn muốn luyện lại nhưng cực kì khó chịu khi phải copy, paste từng link một, cực kì lâu… Đến lúc xong thì cũng cụt hứng rồi… May mắn bạn có trình code HTML, JS, CSS và kiến thức tiếng Anh bao la nhờ những bộ phim. Sau vài ngày, bạn đã viết xong cái Extension để import link cho nhanh… Bạn lại tiếp tục tu luyện…

Bạn đã tu luyện xong khóa ăn mặn, bắt đầu học đến chương đá* khai. Bạn tìm kiếm được vài trang có khóa học này, nhưng nó yêu cầu phải có tài khoản VIP để luyện, tuy nhiên tâm lý bạn lại không muốn trả tiền do bị nhiễm từ khóa ăn mặn. Lượm lặt một hồi trên J2TEAM Community có nhiều cao thủ, cao nhân share tài khoản cho mà học. Như chết đuối gặp được phao, bạn đăng nhập ngay và sài ngon lành… Tuy nhiên bạn không muốn phải vào Facebook, tìm lại tài khoản đó nữa, Chrome ẩn danh thì không hiểu tâm lý người dùng, Facebook thì ngốn RAM,… Vậy là bạn nảy ra ý tưởng lưu luôn cookies cùng với link, khi học chỉ cần import 1 lần là xong, đỡ phải tìm nhiều.

Một thời gian sau, bạn đã tu luyện xong khóa ăn mặn và đá* khai, đang trong thời gian ôn tập để nộp đồ án gửi lên trường. Thời gian ôn tập ngắn ngủi nên bạn phải tăng cường độ ôn tập, và rồi sau khi nộp đồ án, bạn đã phải nằm viện thì suy thận cấp độ 4 kết hợp với thoát vị đĩa đệm, lệch dây thần kinh liên sườn và phù nê tiền liệt tuyến (đoạn này tham thảo của Vo_tonq_danh_meo)…
Link download: https://drive.google.com/file/d/1-pcgkzly6CMHlzlVxOw2kF5x-vXKXkjU
https://www.youtube.com/watch?v=N4J1qabr0uY


(Lập Trình Sư) #2

Hay đó em, nhưng mà chắc code đoạn này hơi nhầm chút nhỉ?

chrome.tabs.onCreated.addListener(
    function () {
        BadgeText();
    }
);
chrome.windows.onRemoved.addListener(
    function () {
        BadgeText();
    }
);
chrome.tabs.onCreated.addListener(
    function () {
        BadgeText();
    }
);
chrome.tabs.onRemoved.addListener(
    function () {
        BadgeText();
    }
);

Bị duplicate 2 cái chrome.tabs.onCreated kìa.

Thêm cả, refactor lại cho nó gọn.

[chrome.tabs.onCreated, chrome.tabs.onRemoved, chrome.windows.onCreated, chrome.windows.onRemoved].forEach(f => f.addListener(BadgeText));

(Hà Hải Nam) #3

OK, em cảm ơn anh, em mới là con gà JS nên vẫn có nhiều thiếu xót với code vẫn còn bẩn. :smile:


(Lập Trình Sư) #4

Code lại cho gọn

        var number = 0;
        for (let i = 0; i < windows.length; i++) {
            number += windows[i].tabs.length;
        }

thành

var number = windows.reduce((a, w) => w.tabs.length + a, 0);

Cái này:

        if (number > 20) {
            chrome.browserAction.setBadgeBackgroundColor({color:'#FF0000'});
        }
        else {
            chrome.browserAction.setBadgeBackgroundColor({color:'#4780f3'});
        }

thành

        number > 20 ? chrome.browserAction.setBadgeBackgroundColor({color:'#FF0000'}) :
            chrome.browserAction.setBadgeBackgroundColor({color:'#4780f3'});

number đã là số rồi, ko cần phải convert nữa.

number = String(number);

Cái này duplicate code:

 chrome.storage.sync.get(function (data) {
     console.log(data);
 });
 chrome.storage.sync.get(function (data) {
     console.log(data);
 });

(Hà Hải Nam) #5

Cái chỗ number thì Chrome yêu cầu dữ liệu dạng string nên em mới ép kiểu đó ạ. :frowning:


(Chien Dang) #6

Up, cơ mà ngôn từ khiêu khích quá nhé :joy:
Chờ m.ng góp ý rồi anh vẫn bảo lưu ý kiến là up lên store kiếm $ :blush:


83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?