Chrome拡張機能がJavaScriptを挿入し、ブラウザのアクションで角度がクリックされます

ニックグリーン

javascriptだけを任意のページに挿入する拡張機能がありますが、それを挿入すると、Angularモジュールとすべてのコントローラーが機能しません。私もそれらを注入するべきですか、それとも何か他のことをするべきですか?

インジェクション.js

chrome.browserAction.onClicked.addListener(function (tab) {
    chrome.tabs.executeScript(tab.id, {
        file: 'src/injection.js'
    }, function () {
        console.log("Script injected!");
    });
});

app.js

angular.module('app', ['ngRoute', 'ui.router'])
    .run(function ($rootScope) {
        $rootScope.message = "Hello Angular again!";
        $rootScope.successMsg = "Hello Angular again! SUCCESS!";
});

インジェクション.js

'use strict';
var cheapWatcherDiv = document.createElement('div');
cheapWatcherDiv.setAttribute('class', 'cheap-watcher');
document.body.appendChild(cheapWatcherDiv);
var logged = false;
if (logged == false) {
    $(".cheap-watcher").load(chrome.extension.getURL('views/main.html'));
    $('head').append('<link rel="stylesheet" href="' + chrome.extension.getURL('sass/main.css') + '" type="text/css" />');
} else {
    $(".cheap-watcher").load(chrome.extension.getURL('views/logoutTemplate.html'));
}

マニフェスト

...
"content_scripts": [
{
  "run_at": "document_end",
  "matches": [
    "http://*/*",
    "https://*/*"
  ],
  "js": [
    "lib/jquery/dist/jquery.min.js",
    "lib/angular/angular.js",
    "lib/angular-route/angular-route.min.js",
    "lib/ui-router/release/angular-ui-router.min.js",
    "lib/angular-sanitize/angular-sanitize.min.js",

    "src/app.js",
    "src/LoginController.js",
    "src/LogoutController.js",
    "src/MainController.js"
     ]
   }
 ]
Adnan umer

グーグルクロームには3種類のスクリプトがあります(続きを読む)。これらのスクリプトにはすべて、独自のコンテキストがあります。

あなたの場合、angularjslibにはコンテンツスクリプトからのみアクセスできます。挿入されたスクリプト内でangularjsとコントローラーにアクセスする場合は、それらも挿入する必要があります。それらを挿入するときは、前のスクリプトがロードされたときにのみ次のスクリプトを挿入するようにしてください。

これsrc/injection.jsを一番上に置いてください

function injectJavaScripts(urls) {

    var elements = [];
    urls.forEach(function (url) {
        var s = document.createElement('script');
        s.src = chrome.extension.getURL(url);
        elements.push(s);
    });

    var target = document.head || document.documentElement;
    var i = 0;
    var patchNext = function () {
        if (i >= elements.length) return;
        else if (i > 0) {
            elements[i - 1].onload = null;
        } 

        elements[i].onload = patchNext;
        target.appendChild(elements[i]);

        i += 1;
    };

    patchNext();
};

injectJavaScripts([
    "lib/jquery/dist/jquery.min.js",
    "lib/angular/angular.js",
    "lib/angular-route/angular-route.min.js",
    "lib/ui-router/release/angular-ui-router.min.js",
    "lib/angular-sanitize/angular-sanitize.min.js",

    "src/app.js",
    "src/LoginController.js",
    "src/LogoutController.js",
    "src/MainController.js"
 ]);

それがあなたにもうまくいくかどうか私に知らせてください。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Chrome拡張機能:ブラウザのアクションがクリックされると、現在のドメイン名でのみ実行されます

Chrome拡張機能のブラウザアクションポップアップが表示されないのはなぜですか?

CSSを挿入/削除するポップアップを備えたChrome拡張機能のブラウザアクション

Chrome拡張機能のブラウザアクションがクリックされたときにテキストをクリップボードにコピーする

ブラウザ アクション クリックで API を介して完全な HTML (JS の後に読み込まれる) を送信する方法 - Chrome 拡張機能?

Chrome拡張機能の背景ページが非アクティブになると、拡張機能が2回のクリックで実行されます

FirefoxアドオンSDK拡張機能の無効化/削除アクションが実行された後にDOMをクリーンアップします

Chrome拡張機能は、ブラウザの操作をクリックしてアクセスできる.htmlページを作成します。

Chrome拡張機能:ユーザーがiframeをクリックしたときのアクションを設定する

Chrome拡張機能アイコンをクリックすると、現在のページのURLが新しいウィンドウで開きます

Chrome拡張機能アイコンをクリックすると、現在のページのURLが新しいウィンドウで開きます

エラー:キャッチされていないTypeError:storage.set(オブジェクトアイテム、オプションの関数コールバック)の呼び出しでエラーが発生しましたChrome拡張機能

Chrome拡張機能:ウェブページが完全に読み込まれた後にコンテンツスクリプトを挿入したい

解析-[queryfindObjectsInBackgroundWithBlock:^。)]; アクション拡張機能を使用してブロックが実行されない

拡張機能を使用してブラウザを開くと、アラートボックスが自動的に表示されます

アクション拡張機能、インスタントマークアップで画像を取得すると、空白の画面が返されます

アクション拡張機能、インスタントマークアップで画像を取得すると、空白の画面が返されます

Chrome以外のブラウザでアニメーションスクリプトが機能しない

MixpanelとChrome拡張機能の統合(ブラウザアクションなし)

バックグラウンドスクリプトでのChrome拡張機能のクロスオリジンリクエストがブロックされました

拡張機能*ポップアップ*スクリプト内でブラウザページが読み込まれるのを待つ方法

コードはコンソールでは正常に実行されますが、ブラウザー拡張機能によって挿入されるとエラーが発生します(FirefoxではなくChromeで動作します)

1つのGoogleChrome拡張機能に複数のブラウザアクションアイコンを含めることはできますか?

Chrome拡張機能の背景ページによってプログラムで挿入されたコンテンツスクリプトが複数回挿入されました

Chrome拡張機能:Background.htmlのiframeにより、バックグラウンドスクリプトが2回実行されます

拡張機能のバックグラウンドスクリプトが実行されているブラウザを特定するにはどうすればよいですか?

ツールバーアイコンがクリックされたときに新しいタブでChrome拡張機能を開く

ブラウザ拡張機能を介したJavaScriptの挿入

UbuntuでChromeを更新すると、ブラウザデータ、Cookie、セッションストレージなどがクリアされますか?

TOP 一覧

  1. 1

    Python / SciPyのピーク検出アルゴリズム

  2. 2

    セレンのモデルダイアログからテキストを抽出するにはどうすればよいですか?

  3. 3

    tkinterウィンドウを閉じてもPythonプログラムが終了しない

  4. 4

    androidsoongビルドシステムによるネイティブコードカバレッジ

  5. 5

    ZScalerと証明書の問題により、Dockerを使用できません

  6. 6

    Reactでclsxを使用する方法

  7. 7

    VisualStudioコードの特異点/ドッカー画像でPythonインタープリターを使用するにはどうすればよいですか?

  8. 8

    二次導関数を数値計算するときの大きな誤差

  9. 9

    Ansibleで複数行のシェルスクリプトを実行する方法

  10. 10

    STSでループプロセス「クラスパス通知の送信」のループを停止する方法

  11. 11

    ビュー用にサイズ変更した後の画像の高さと幅を取得する方法

  12. 12

    Three.js indexed BufferGeometry vs. InstancedBufferGeometry

  13. 13

    __init__。pyファイルの整理中に循環インポートエラーが発生しました

  14. 14

    三項演算子良い練習の代わりとしてOptional.ofNullableを使用していますか?

  15. 15

    エンティティIDを含む@RequestBody属性をSpringの対応するエンティティに変換します

  16. 16

    Spring Boot Filter is not getting invoked if remove @component in fitler class

  17. 17

    値間の一致を見つける最も簡単な方法は何ですか

  18. 18

    reCAPTCHA-エラーコード:ユーザーの応答を検証するときの「missing-input-response」、「missing-input-secret」(POSTの詳細がない)

  19. 19

    Rパッケージ「AppliedPredictiveModeling」のインストール中にエラーが発生しました

  20. 20

    画像変更コードを実行してもボタンの画像が変更されない

  21. 21

    好き/愛の関係のためのデータベース設計

ホットタグ

アーカイブ