Click here to Skip to main content
15,886,091 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Hi,

I need your help! I am newbie in chrome extension and I am get stuck with below case so Could you please help me?

We need to load HTML pages with user details by conditionally in default popup box from popup.js file. I have added below code in popup.js. When user is logged-in extension then we are storing it in chrome.storage by using chrome.storage.sync.set() APIs and get that user details by following code in popup.js file.
---------------------------------------
chrome.storage.sync.get(["user"], function(items) {
if (!items.user){
window.location.href = "login.html";
} else {
$("#usernameId").text('Welcome '+items.user.username);
$("#totCreditId").text(items.user.tot_credit);
$("#leftCreditId").text(items.user.left_credit);
window.location.href = "main.html";
}
});
---------------------------------
It working fine but user details are not reflected (username, total credit, left credit etc..) in main.html page, Can you please correct me what I am doing wrong in it?

Thanks in advance!

What I have tried:

NOTE:- Below are files in my extension :-
------------
manifest.json
{
    "background": {
        "persistent": true,
        "scripts": [ "js/libs/jquery-2.2.3.min.js", "js/libs/aes.js", "js/libs/aes-json-format.js", "js/global.js", "js/background.js" ]
    },
    "browser_action": {
        "default_icon": "images/logo.png",
        "default_popup": "popup.html",
        "default_title": "LeadCapture"
    },
    "content_scripts":[{
        "css": [ "css/content.css" ],
        "js": [ "js/libs/jquery-2.2.3.min.js"],
        "matches": [ "http://*/*", "https://*/*" ],
        "run_at": "document_end"        
    }],
    "content_security_policy": "script-src 'self' 'unsafe-eval' https://code.jquery.com; object-src 'self'",
    "description": "LeadCapture",
    "homepage_url": "http://app.demo.25.com/",
    "icons": {
        "128": "images/logo128.png",
        "48": "images/logo48.png"
    },
    "web_accessible_resources": [ "/*" ],
    "manifest_version": 2,
    "name": "LeadCapture",
    "permissions": ["tabs", "activeTab", "cookies", "clipboardWrite", "storage", "http://app.demo.25.com/*" ],
    "version": "0.1"
}
popup.html page
<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <script type="text/javascript" src="js/libs/jquery-2.2.3.min.js"></script>
        <script type="text/javascript" src="js/global.js"></script>
        <script type="text/javascript" src="js/popup.js"></script>
    </head>
    <body style="width:350px;"></body>
</html>

popup.js file
$(function(){
    chrome.cookies.get({'url': objSettings.COOKIE_PATH, 'name': 'uuid'}, function(cookie){
        if(cookie){
            objSettings.UUID = cookie.value;
            chrome.extension.getBackgroundPage().objSettings.UUID = cookie.value;
        }
        chrome.tabs.query({active:true,currentWindow:true}, function(tab){
            //chrome.tabs.reload(tab[0].id);
            var jsScript = '';
            $.ajax({
                url: "http://app.demo.25.com/extension/content.js",
                type: 'GET',
                cache: false,
                async: false,
                success: function(data){
                    jsScript = data;
                }
            });
            chrome.tabs.executeScript(tab[0].id, {code: jsScript},function() {
                // If you try and inject into an extensions page or the webstore/NTP you'll get an error
                if (chrome.runtime.lastError) {
                    /*console.error(
                        "There was an error injecting script : \n" +
                            chrome.runtime.lastError.message,
                    );*/
                }
            });
            message = {from:'popup', task:'bootStrapExtension', uuid:objSettings.UUID, loadFile:'', showTab:'lg_extension_tab_3', tabUrl:tab[0].url};
            if(objSettings.UUID == '')
                message.loadFile = 'login.html';
            else{
                message.loadFile = 'main.html';
            }
            chrome.tabs.sendMessage(tab[0].id, message);
            chrome.storage.sync.get(["user"], function(items) {
                if (!chrome.runtime.error) {
                    if (!items.user) {
                        alert('IF');
                        chrome.browserAction.setPopup({popup:message.loadFile});
                    }
                    else
                    {
                        if(items.user.username.length > 0)
                            $("#customUsernameId").text('Welcome '+items.user.username);
                        if(items.user.tot_credit.length > 0)
                            $("#customTotCreditId").text(items.user.tot_credit);
                        if(items.user.left_credit.length > 0)
                            $("#customLeftCreditId").text(items.user.left_credit);
                        var userExt = {
                            username: items.user.username,
                            tot_credit: items.user.tot_credit,
                            left_credit: items.user.left_credit
                        };
                        chrome.storage.sync.set({ user: userExt }, function(result) { 
//chrome.browserAction.setPopup({popup:message.loadFile});
                            window.location.href = message.loadFile;
                        });
                    }
                }
            });
        });
    });
});

main.html
login.html
background.js
<content.js
.. etc
Posted
Updated 20-Aug-20 23:23pm
v6

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900