2011-07-17 97 views
0

我在這裏有一些問題。根據我以前提出的問題,我開發了一個擴展程序,注意鼠標點擊並標記該位置。獲取彈出窗口的鼠標座標而不是背景窗口

但是,當我點擊一個鏈接打開彈出窗口;被標記的鼠標點擊在背景窗口上,而不是在彈出窗口上。

這是安全問題還是什麼?

background.html

chrome.extension.onRequest.addListener(function(request, sender, sendResponse) { 
    chrome.tabs.captureVisibleTab(null, {format:"png"}, function(dataUrl){ 

    var img = new Image(); 
    img.onload = function(){ 
     var canvas = document.getElementById("canvas"); 
     canvas.width = img.width; 
     canvas.height = img.height; 

     var ctx = canvas.getContext("2d"); 

     ctx.drawImage(img, 0, 0); 
     ctx.arc(request.x, request.y, 5, 0, Math.PI*2, true); 
     ctx.fillStyle = "rgb(255,0,0)"; 
     ctx.fill(); 

     chrome.tabs.create({url: canvas.toDataURL("image/png")}); 
    }; 
    img.src = dataUrl; 

}); 
sendResponse({}); 
}); 
<body> 
    <canvas id="canvas"></canvas> 
</body> 

content_script.js:

window.addEventListener("click", function(event) { 
    chrome.extension.sendRequest({x: event.x, y: event.y}); 
}); 
+0

你能展示一些代碼 – serg

+0

@serg:這是相同的代碼,你讓我用鼠標器標記。然而,它發佈在問題(編輯) – user782400

回答

1

這是因爲當前窗口焦點窗口是在Chrome API兩回事。通過nullchrome.tabs.captureVisibleTab()需要當前窗口,彈出窗口意味着一個背景窗口。正如它在docs中所述:

當前窗口是包含當前正在執行的代碼的窗口。認識到這一點很重要,它可能與最頂層或關注的窗口不同。

要發送,我們需要明確指定其請求窗口的截圖:

chrome.extension.onRequest.addListener(function(request, sender, sendResponse) { 
    chrome.tabs.captureVisibleTab(sender.tab.windowId, {format:"png"}, function(dataUrl){ 
     ... 
    }); 
}); 
0

如果彈出窗口是不活動(如圖所示),你不能這樣做後臺頁面內任何事情。假設你正在追蹤這個事實。

確保您的鼠標點擊在該彈出窗口DOM內。所以在你的彈出窗口中,做聽衆。

相關問題