2011-10-08 85 views
9

我是鉻擴展的新手。 我想創建一個簡單的Chrome擴展,它彈出一個警報,其中包含當前html頁面的標題。 當我執行時:alert(document.title),我沒有得到它,因爲文檔對象不屬於頁面,而是屬於擴展腳本(是否正確?) 如何獲取正確的文檔對象?從Chrome擴展訪問當前的html頁面

回答

3

可以使用tabs module

chrome.tabs.getCurrent(function(tab) { 
    alert(tab.title); 
}); 
10

內容腳本去最簡單的方法:

展開清單文件與此代碼:

... 
"content_scripts": [ 
    { 
    "matches": ["http://urlhere/*"], 
    "js": ["contentscript.js"] 
    } 
], 
... 

內容的腳本(截至matches提到在manifest文件每一頁上自動執行):

alert(document.title) 

使用內容腳本的優勢chrome.extension.*方法是,您的擴展不需要SC ary權限,如tabs


參見:

+0

@羅布女:我剛纔問過類似的問題http://stackoverflow.com/questions/1964225/accessing-current-tab -dom對象從 - 彈出式的HTML。但在我的情況下,擴展將信息從當前標籤發送到我的書籤應用程序。我理解你的答案的方式,然後,我試圖書籤的任何頁面都需要包含在清單文件中。它是否正確?在這種情況下,這將是無用的。謝謝。 – Zeynel

+1

@Zeynel然後包括'「*」':'「匹配」:[「*」],' –

+0

@ Rob W:謝謝。我可能不會這樣做,但我必須輸入'「匹配」:[「http:// */*」],以使其按照此http://code.google.com/chrome/extensions /match_patterns.html,否則我得到'丟失計劃分離器'我還沒有嘗試過,但至少擴展上傳。再次感謝。 – Zeynel

1

爲你做什麼你東東d做的是

chrome.tabs.executeScript({ 
    code: 'alert(document.title)' 
}) 

的chrome.tabs.executeScript API允許你在當前頁面,而不是在擴展運行JavaScript所以這個工作得很好,但如果你以後要使用該頁面的名稱在更復雜的擴展比我只想做了什麼

+1

這是否需要向CSP添加'unsafe-eval'? – Xan

0

我用什麼pimvdb這個擴展做類似的事情:

main.js:

(function(){window.prompt('Page title:', document.title)})()

manifest.json的:

{ 
"background": {"scripts": ["background.js"]}, 
"browser_action": { 
"default_title": "popup_title" 
}, 
"name": "popup_title", 
"description": "Display the page title for copying", 
"permissions": [ 
    "tabs", 
    "http://*/*", 
    "https://*/*" 
], 
"version": "1.0", 
"manifest_version": 2 
} 

background.js:

chrome.browserAction.onClicked.addListener(function(tab) { 
    chrome.tabs.executeScript(tab.id, {file: "main.js"}) 
}); 
相關問題