1

私はこれを機能させるために過去2日間試みてきましたが、最後の手段としてここで尋ねています。メッセージ パッシング、いくつかのブログ、そしてもちろん Google のメッセージ パッシング ページに関連する、StackOverflow に関するすべての関連投稿を見てきました。

私が構築した APP は、何かを含むページ内のリンクを探し、その開始を置き換えます。たとえば、URL で「google.com」を検索し、先頭を「ask.com」に置き換えます。

私が抱えている問題は、この変数をローカルストレージ変数に保存したいということです。ただし、ページが更新されると、渡された新しい URL は使用されません。デバッグを容易にするために、簡略化されたバージョンを作成するために混乱を少し取り除きました。助けてください!すぐに毛がなくなります!

localStorage["talktest1"]popup.js から渡された新しい URL に変更する必要がある URL が含まれています。次に置換スクリプトが読み込まれると、新しいtalktest1変数が使用されますが、古い「www.google.co.uk」変数が引き続き使用されます。

Manifest.js:

{
  "name": "Talk Talk",
  "version": "1.0",
  "description": "Tests stuff.",  
    "browser_action": {
    "default_icon": "img/icon16.png",
    "default_popup": "popup.html"
  },
    "options_page": "options.html",
  "permissions": [
    "tabs", "*://*/*"
  ],
  "background": {
    "scripts": ["js/jquery-1.7.2.min.js","js/bg.js"]
  },
    "icons": { "16": "img/icon16.png",
               "48": "img/icon48.png",
               "128": "img/icon128.png" },
  "content_scripts": [
    {
      "matches": ["*://*/*"],
      "js": ["js/jquery-1.7.2.min.js","js/bg.js"],
      "run_at": "document_end"
    }
  ]
}

popup.js:

$(document).ready(function() {

    chrome.extension.getBackgroundPage().alert_this();

    $('.link_change').click(function() { // when a link is clicked - url is grabbed from a 'href'

        chrome.extension.sendRequest({localstorage: "http://www.something.com"}, function(response) {
            var email = response.value;
            chrome.extension.getBackgroundPage().alert_this();
        });     

        return false;
    });


});

bg.js:

if(!talktest1){
    var talktest1;
}
if(!localStorage["talktest1"]){
    localStorage["talktest1"] = "http://www.google.co.uk";
}

talktest1 = localStorage["talktest1"];


chrome.extension.onRequest.addListener(
    function(request, sender, sendResponse) {       
        localStorage["talktest1"] = request.localstorage;
        talktest1 = request.localstorage;
        sendResponse({value: localStorage.talktest1});
    }
);

function alert_this(){
    alert("localstore|" + localStorage["talktest1"]);
    alert("talktest1|" + talktest1);
}


$("a[href*='google.com']").each(function(){ 
    this.href = this.href.replace('http://www.ask.com',talktest1);
});
4

1 に答える 1

0
  1. bg.js背景ページとコンテンツ スクリプトの両方として使用するのはなぜですか? 意味がありません。chrome.extension.onRequestコンテンツ スクリプトでは使用できず、コンソールでエラーがスローされます。$("a[href*='google.com']")...一部を別のスクリプト (のようなものcontent.js) に入れて、manifest.json.

  2. を設定しておらずmanifest_version、デフォルトは 1 で、background設定が利用できませんでした ( source ) background_page

  3. $('.link_change').clickin はpopup.js、クリックされたポップアップ内のリンクにのみ反応し、サイトからのリンクには反応しません。それはあなたが意図したものですか?ポップアップは独自の生活を送っています。現在開いているウェブサイトについては何も知りません。

  4. alert()バックグラウンドページからは表示できないと思います。あなたのalert_this()機能は機能していますか?

  5. ポップアップまたは bg ページにエラーはありますか? デバッグしましたか?onRequestリスナー関数 (bg.js) にブレークポイントを配置して、そこで何が起こるかを確認する必要があります (request.localstorage大丈夫ですか? 値は正しく設定されていますか?)。バックグラウンド ページをデバッグするInspect active viewsには、Chrome 拡張機能ページの拡張機能の下にあるオプションを使用してください。

于 2012-06-05T08:02:01.670 に答える