2016-10-01 4 views
0

「マッチ」に基づいてcontent_scriptsで別のスクリプトを実行しますそれがhttp://かhttps://かによってWebページが異なります。ただし、実行するスクリプトは1つのみです。は、私はJavaScriptで始めることだし、MDNチュートリアルでスクリプトを変更しようとしています

manifest.jsonをこれで次のようにhttpsdetect.js

{ 
 

 
    "manifest_version": 2, 
 
    "name": "HTTPS Detect", 
 
    "version": "1.0", 
 

 
    "description": "Draws a blue border around HTTPS protected websites. Non-HTTPS sites are given a red border, indicating they do not provide encryption.", 
 

 
    "icons": { 
 
    "48": "icons/border-48.png" 
 
    }, 
 

 
    "content_scripts": [ 
 
    { 
 
\t 
 
     "matches": ["https://*/*"], 
 
     "js": ["httpsdetect.js"], 
 
     "matches": ["http://*/*"], 
 
     "js": ["nohttps.js"] 
 
     
 
\t } 
 
\t 
 
\t ] 
 
    
 
}

は次のとおりです。

document.body.style.border = "5px solid blue";

とnohttps.jsです:

document.body.style.border = "5px solid red";

答えて

1

content_scriptsキーは、オブジェクト(必須matchesキーをそれぞれ含む)、同じキーの複数のコピーを有するだけではなく、単一のオブジェクトの配列です。あなたが持っている方法では、2つのmatchesと2つのjsキーが同じオブジェクト内にあります。これは、以前のファイルを上書きするファイルの後半でキーとして解釈されます。

matchesの場合は、配列内の別のオブジェクトである必要があります。

manifest.jsonを:あなたのmanifest.jsonをは、次のようになりますが、一つだけのファイルをロードしていることを考えると

{ 

    "manifest_version": 2, 
    "name": "HTTPS Detect", 
    "version": "1.0", 

    "description": "Draws a blue border around HTTPS protected websites. Non-HTTPS sites are given a red border, indicating they do not provide encryption.", 

    "icons": { 
    "48": "icons/border-48.png" 
    }, 

    "content_scripts": [ 
    { 
     "matches": ["https://*/*"], 
     "js": ["httpsdetect.js"] 
    }, 
    { 
     "matches": ["http://*/*"], 
     "js": ["nohttps.js"] 
    } 
    ] 
} 

代わりに、あなたはhttphttpsの両方に同じのJavaScriptファイルを読み込むことができますページを開き、httpまたはhttpsと一致するURLに基​​づいて何をしているかを変更します。 2つのスクリプトの間でコードが共有されていた場合は、より効率的になるかもしれません(または、共有されていないコードを含む別のファイルをそれぞれにロードする際に、 )。その場合は、match patternのいずれか1つ、またはmatchesアレイ内の複数の一致パターンのいずれかを使用できます。

関連する問題