簡體   English   中英

Chrome擴展程序-onClick函數中的javascript僅在調試時有效

[英]Chrome Extension - javascript in onClick function only works when debugging

我正在創建一個Chrome擴展程序,該擴展程序在單擊擴展程序圖標時將向用戶顯示一個按鈕,單擊該按鈕將打開一個新選項卡,該選項卡將顯示從原始頁面傳遞給它的參數。 奇怪的是,如果我對其進行調試(例如,右鍵單擊擴展圖標,然后單擊“檢查彈出窗口”),它將可以正常工作,但是如果我沒有進行調試,則在單擊按鈕后它只會顯示空白頁面。

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>  

創建新選項卡后,瀏覽器將激活它,並且您的彈出窗口將關閉。 因此,永遠不會從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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM