0

This is not a duplicate of https://stackoverflow.com/a/21049890/439130
That one explains it via where I'm asking for (a.k.a. Angular2+)

Code below is the main part of a Chrome extension that has been written via and it changes the content of the page plus it injects . I have to convert it to .

Looked into the links below but they all targets/creates their own window and not uses the base content window.

Looking to get a clear sample that demonstrates how to bootstrap (2+) manually in loaded page for Chrome extension.

index.html

<!DOCTYPE html>

<html lang="en" xmlns="http://www.w3.org/1999/xhtml">

<head>
    <link rel="stylesheet" href="/css/app.css" />
</head>

<body>
    <h1>Hello world!</h1>

    <script src="/lib/jquery/jquery.min.js"></script>
    <script src="/lib/angular/angular.min.js"></script>
    <script src="/lib/angular-route/angular-route.min.js"></script>
    <script src="/lib/angular-resource/angular-resource.min.js"></script>
    <script src="/lib/angular-cookies/angular-cookies.min.js"></script>
    <script src="/scripts/app.js"></script>
</body>

</html>

app.js

function DoWork() {
    var url = chrome.extension.getURL("/areas/body.html");
    $('html').load(url);

    chrome.runtime.sendMessage({ directive: "inject-angular" }, function(response) {
        console.log("retrieving response" + response);
        // Load();
    });
}

$(document).ready(DoWork);

background.js

chrome.runtime.onMessage.addListener(
    function(request: any, sender: chrome.runtime.MessageSender, sendResponse: Function): void {
        switch (request.directive) {
            case "inject-angular":
                var queryInfo: chrome.tabs.QueryInfo = { currentWindow: true, active: true };
                chrome.tabs.query(queryInfo, function(tabs): void {
                    var tabId: number = tabs[0].id;
                    console.log("executing code");
                    chrome.tabs.executeScript(tabId, {
                        code: "window.name = 'NG_DEFER_BOOTSTRAP!' + window.name;"
                    }, function() {
                        console.log("executing angular");
                        chrome.tabs.executeScript(tabId, {
                            file: "/lib/angular/angular.min.js"
                        }, function() {
                            console.log("executing angular-filter");
                            chrome.tabs.executeScript(tabId, {
                                file: "/lib/angular-filter/angular-filter.min.js"
                            }, function() {
                                console.log("executing controller");
                                chrome.tabs.executeScript(tabId, { file: '/scripts/standalone/controller.js' }, function() {
                                    console.log("sending response.");
                                    sendResponse();
                                });
                            });
                        });
                    });
                });
                break;
            default:
                console.log("Unmatched request of '" + request + "' from script to background.js from " + sender + " :: [" + sender.tab.id + "] " + sender.tab.url);
                console.log(request);
                sendResponse();
        }
    }
);
cilerler
  • 9,010
  • 10
  • 56
  • 91

1 Answers1

0

it is very difficult task angularjs 1.x is beguiled using js so it's easy to developer with any third party API like chrome API. but in angular2 its base os type script so its very defect to build and debug. (i am not saying not possible)

Pankaj Rupapara
  • 752
  • 4
  • 9