简体   繁体   English

Chrome扩展程序从Angular转换为Angular2

[英]Chrome extension convert from Angular to Angular2

This is not a duplicate of https://stackoverflow.com/a/21049890/439130 这不是https://stackoverflow.com/a/21049890/439130的副本
That one explains it via where I'm asking for (aka Angular2+) 那是通过解释的,我在这里问 (aka 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 . 以下代码是已通过编写的Chrome扩展程序的主要部分,它更改了页面的内容 ,并注入了 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. 希望获得一个清晰的示例,以演示如何在已加载的Chrome扩展页面中手动引导 (2+)

index.html 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 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 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();
        }
    }
);

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. 使用js诱使angularjs 1.x任务非常艰巨,因此使用任何第三方API(例如chrome API)进行开发都很容易。 but in angular2 its base os type script so its very defect to build and debug. 但是在angular2中,它的基本操作系统类型脚本因此非常难以构建和调试。 (i am not saying not possible) (我不是说不可能)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM