2016-05-24 11 views
-1

クロムエクステンションに4つのモードがあるとすると、ページのコンテンツスクリプトとページを変更するモードを1つ選択します。しかし、別のページを入力すると、このモードは機能しません。ポップアップページのjavascriptで 私が望むのは、他のページを入力してもモードが動作することです。また、クロムソフトウェアを閉じてからもう一度開くと、拡張子は前に選択したモードになりますか?これはうまくいくのでしょうか? 私のコードはこちらです。 popup.js拡張機能で設定した操作をChrome拡張機能で保存できますか?

var colorMode = 0; 
var temp = 0; 
var flag = 1; 
function transUp(){ 

if (flag){ 
    flag = 0; 
} 
else{ 
    colorMode = temp + 1; 
    if(colorMode == 6) colorMode = 0; 
} 
chrome.tabs.executeScript(null, {code:"colorChange('" + colorMode + "')"}); 
temp = colorMode; 
colorMode++; 
if(colorMode == 6) colorMode = 0; 
} 


document.addEventListener('DOMContentLoaded', function() { 
document.getElementById("up").addEventListener('click',transUp); 
}); 
popup.html 

<!doctype html> 
<html> 
    <head> 
    <title>Set Page Color Popup</title> 
    <style> 
    *{ 
     margin: 0; 
     padding: :0; 
    } 
    .container{ 
     overflow:hidden; 
     width:74px; 
     height:74px; 
     margin:10px; 
    } 
    #up{ 
     background: url(up.png) center no-repeat; 
     background-size: 28px 28px; 
     margin: 3px 0 0 3px; 
    } 
    #up:hover{ 
     box-shadow: 0 0 5px #000; 
    } 

    div div{ 
     width: 32px; 
     height: 32px; 
     border: 1px #000 solid; 
     float: left; 
     cursor: pointer; 
    } 

    </style> 
    <script src="popup.js"></script> 
    </head> 
    <body> 
    <div class="container"> 
     <div id="up"></div> 
    </div> 
    </body> 
</html> 

contentscript.js

var colorFont=['#fff','#feff00','#fff','#feff00','#fff','#fff']; 
var colorBack=['#000','#000','#0000bf','#0000bf','#00ff00','#ff0000']; 
var colorNum = 0; 
function colorChange(color){ 
    colorNum = color; 
    doTrans(colorNum); 
} 
function doTrans(colorKey){ 
    var tags = document.body.getElementsByTagName('*'); 
    for (var i = 0; i < tags.length; i++) 
    { 
     tags[i].style.color=colorFont[colorKey]; 
     tags[i].style.backgroundColor=colorBack[colorKey]; 
    } 
} 

答えて

0

あなたがポップアップし、コンテンツスクリプトの両方が利用可能な永続ストレージを使用する必要があります。

クロムはchrome.storage APIの形式で提供されます。

Options pagesに関するGoogleのドキュメントはすばらしい例です。

chrome.storageは非同期であることに注意してください。 common mistakesを作成しないでください。

+0

ありがとうございます。私はlocalstorageを試して、それが動作します – yovino

関連する問題