1

我寫了Chrome瀏覽器的擴展,其中,我想添加事件偵聽器窗口大小調整事件。我正在執行窗口加載事件的方法,但沒有獲取調整大小事件。如何獲得窗口通知調整的Chrome瀏覽器

下面要提到的是我的manifest.json文件中的代碼

{ 
    "name": "A browser action", 
    "version": "1.0", 
    "background": { "scripts": ["background.js"] }, 
    "permissions": [ 
    "tabs", "http://*/*" 
    ], 
    "manifest_version": 2 
} 

下面要提到的是我的background.js文件的代碼。

var myExtension = 
{ 
    init: function() 
    { 
     // The event can be DOMContentLoaded, pageshow, pagehide, load or unload.   
     alert("ASHSIH"); 
     window.addEventListener("resize", this.onmyPageResize, false); 
    }, 
    onmyPageResize: function(aEvent) 
    { 
     alert("RESIZED"); 

    } 
} 


window.addEventListener("load", function load(event){ 
    window.removeEventListener("load", load, false); //remove listener, no longer needed 
    myExtension.init();  
},false); 
+1

你嘗試'document.addEventListener( '調整',...)'? –

+0

您是否嘗試過在函數變量標識符中不使用'this'?它看起來像你正確使用它,但它增加了一個額外的事情可以在你的例子中錯了。沒有它,你的測試案例會更簡單。 – apsillers

+0

感謝您的建議。我嘗試了兩種方式,但沒有獲得爲我調用的調整大小事件。 –

回答

2

的background.js文件不能捕獲調整瀏覽器的事件。您需要爲此注入content script

+0

感謝您的建議。我修改了我的manifest.json文件,使其具有一個字段(「content_scripts」),請參閱下面的代碼以獲取此文件,neverthless我沒有獲取調用事件監聽器。更多我的加載函數消息框本身不是現在。請告訴我哪裏出錯了。 { 「名」: 「我的擴展名」, 「版本」: 「12.0.0.0」, 「content_scripts」:[{ 「匹配」: 「HTTP:// */*」], 「JS 「:」 background.js「] } ], 」權限「: 」標籤「, 」HTTP:// */*「 ], 」manifest_version「:2 } –

+0

你能將窗口大小調整事件代碼複製到單獨的文件中而不是background.js中。我不是100%確定支持使用相同的文件用於兩種目的。 – tomdemuyt

+0

感謝您提供有用的信息,我只能通過使用內容腳本來實現此目的。甚至我能夠將load和resize事件監聽器放在同一個js文件本身中。再次感謝。以下是我的工作manifest.json文件的內容。 { \t 「名」: 「瓷磚」, \t 「版本」:「1。2" , \t 「manifest_version」:2, \t 「描述」: 「瓷磚和粘的窗口,沒有重疊」, \t 「content_scripts。」:[ \t \t { \t \t \t 「JS」:[「鍍鉻鄰tile.js 「], \t \t \t 」匹配「:[ \t \t \t \t」 「 \t \t \t] \t \t} \t], \t 「權限」:[ 「選項卡」] \t \t } –

0

您可以使用jQuery的bind()功能.. http://api.jquery.com/bind/

$(window).bind('resize', function() { 
//do something here 
}); 
+0

我試過這個,但沒有幫助我。我會appriciate如果你可以張貼一些樣品。非常感謝! –

5

Chrome-o-Tile是在其內容腳本中偵聽調整大小的擴展的一個示例。

manifest.json中:

"content_scripts": [ 
    { 
    "js": ["contentscript.js"], 
    "run_at": "document_start", 
    "matches": [ 
     "<all_urls>" 
    ] 
    } 
], 

在contentscript.js:

'use strict'; 

var timeoutId = 0; 

window.addEventListener('resize', function() { 
    if (timeoutId) { 
    clearTimeout(timeoutId); 
    } 
    timeoutId = setTimeout(function() { 
    chrome.runtime.sendMessage({method: 'resize'}); 
    timeoutId = 0; 
    }, 100); 
}, false); 

在background.js:

chrome.runtime.onMessage.addListener(function requested(request) { 
    if (request.method === 'resize') { 
    ... 
    } 
)}; 

也有實現chrome.windows.onResize event for Chrome extensions一個開放的問題。

+0

感謝分享這個例子。真的行。我能夠獲得重新大小的活動.. –

+0

是的,非常感謝您分享您的Chrome-o-Tile示例,完美的答案 – jobwat