2012-02-25 21 views
0

拡張機能アイコンをクリックするとユーザーにボタンが表示されます。そのボタンをクリックすると、渡されたパラメータを表示する新しいタブが開きます元のページから。奇妙なことは、デバッグ(つまり、拡張アイコンを右クリックして "Inspect popup"をクリック)した場合、デバッグしていなければこのボタンをクリックすると空白のページが表示されます。Chrome拡張機能 - onClick機能のjavascriptはデバッグ時のみ動作します

manifest.jsonを

{ 
    "name": "test name", 
    "version" : "0.1", 
    "description": "test description", 
    "browser_action": 
    { 
     "default_icon": "icon_128.png", 
     "popup": "test.html" 
    }, 
    "permissions": [ 
     "tabs", "http://*/*", "https://*/*" 
    ] 
} 

test.htmlという

<HTML> 
<BODY> 
<script type="text/javascript"> 
var currentWindowID = -1; 

window.onload = function(e){ 
    chrome.windows.getCurrent(function(w) 
    { 
     currentWindowID = w.id; 
    }); 
} 

function openNextPage(){ 
    console.log("in openNextPage"); 
    chrome.tabs.create( 
     {url: "test2.html"}, 
     function(tab) 
     {    
      chrome.tabs.sendRequest(tab.id, {someParam: currentWindowID}); 
     } 
    ); 
    console.log("exiting openNextPage"); 
} 
</script> 
<input type="button" value="Show next page" onClick="openNextPage()"> 
</BODY> 
</HTML> 

test2.html

<HTML> 
<script type="text/javascript"> 
    chrome.extension.onRequest.addListener(function(request) 
    { 
     document.write("<h1>test</h1>"); 
     document.write("<h2>value=" + request.someParam + "</h2>"); 
    }); 
</script> 
</HTML> 

答えて

2

それが作成され、あなたのポップアップがするときに新しいタブをアクティブにするブラウザ閉鎖される。したがって、コールバックはchrome.tabs.createから決して呼び出されません。背景ページは、そのようなコードにとってより適切な場所です。

test.htmlという

<HTML> 
<BODY> 
<script type="text/javascript"> 
var currentWindowID = -1; 

window.onload = function(e){ 
    chrome.windows.getCurrent(function(w) 
    { 
     currentWindowID = w.id; 
    }); 
} 

function openNextPage() { 
    var bg = chrome.extension.getBackgroundPage(); 
    bg.openNextPage(currentWindowID); 
} 
</script> 
<input type="button" value="Show next page" onClick="openNextPage()"> 
</BODY> 
</HTML> 

background.html

<HTML> 
<BODY> 
<script type="text/javascript"> 
function openNextPage(currentWindowID) { 
    console.log("in openNextPage"); 
    chrome.tabs.create( 
    {url: "test2.html"}, 
    function(tab) 
    {    
     chrome.tabs.sendRequest(tab.id, {someParam: currentWindowID}) 
    } 
); 
    console.log("exiting openNextPage"); 
} 
</script> 
</BODY> 
</HTML> 
+0

はい、これは動作します!ありがとうございました。他に注意してください。この行をmanifest.jsonファイルに追加する必要があります。 \t "background_page": "background.html"、 – Anssssss

関連する問題