2015-01-11 107 views
3

我剛開始構建我的第一個Chrome擴展程序。我的應用程序中的一個功能是獲取當前網站的名稱。例如,如果當前網址與「*://*.facebook.com/」匹配,我會解釋此網址並將網站名稱稱爲Facebook。Chrome擴展程序:獲取當前網站名稱

我應該如何去這樣做呢?

+0

你們是不是在內容腳本這樣做呢? –

+0

任何方式都可以,但我認爲在內容腳本中不可能做到這一點(因爲我們無法訪問chrome.tabs)。我想要做的是發送消息到後臺並找回解決方案。 –

+1

我認爲它應該工作,如果你嘗試從內容腳本訪問'window.location.host',因爲腳本被注入到該頁面 –

回答

2

由於內容腳本被注入到頁面中,因此您可以在內容腳本本身中使用window.location.host並獲取您的站點的名稱。

2

目前尚不清楚您想要獲取主機名或頁面標題,但如果您願意,可以同時獲得它們。

裏面一個內容腳本你可以這樣做:

var site = location.hostname, 
    title = document.title; 

alert("Site: " + site + " - Title: " + title); 

如果你想從背景頁面做,你不希望使用的內容腳本,也沒有在標籤注入代碼,然後你只能獲取主機的名稱:

var site; 

chrome.tabs.query({/* some query */}, function(tabs) { 
    site = tabs[0].url.split("/")[2]; 
    alert("Site: " + site); 
}); 

如果你也想從後臺頁面你需要imple頁面標題換貨一些消息:

var title; 

chrome.runtime.onMessage.addListener(function(message, sender, sensResponse) { 
    if (message.title) { 
     title = message.title; 
     alert("Title: " + title); 
    } 
}); 

chrome.tabs.query({/* some query */}, function(tabs) { 
    chrome.tabs.executeScript(tabs[0].id, {code: "chrome.runtime.sendMessage({title: document.title});"}); 
}); 

有關我在上面的代碼片段中使用,你可以看到這些文檔鏈接的方法的詳細信息:

+0

非常感謝!一個非常詳細和有用的答案。 :) –

相關問題