2015-04-14 108 views
0

我正在研究一個Chrome擴展,它通過內容腳本將一些按鈕注入頁面,我想要一個鏈接到歷史頁面的按鈕(chrome ://歷史)。鏈接到Chrome://通過擴展名的歷史記錄

這只是打開沒有URL空白標籤:

window.open("chrome://history", "_blank"); 

並具有超鏈接到歷史頁面直接給我一個錯誤:

<a href="chrome://history" target="_blank">...</a> 

Not allowed to load local resource: chrome://history/ 

Chrome's Extension API沒有chrome://*列爲一個支持擴展頁面的方案,它解釋了錯誤,但我想要做的就是提供一個鏈接到歷史頁面。有沒有辦法做到這一點,即使它有點(或很多)複雜?

謝謝!

編輯:補充說,這是通過內容腳本完成的,我沒有在最初的帖子中說明。

+0

爲了澄清:此注射是在**內容腳本**中完成的。 –

回答

2

狼戰爭的答案是正確的,但是,對於一個內容腳本,需要額外的步驟。

需要 a background(或更好,event)頁面來處理請求,因爲內容腳本不能調用該API。您需要使用Messaging

// Content script 
// element is your DOM element 
element.addEventListener("click", function(e) { 
    chrome.runtime.sendMessage({command: "openHistory"}); 
}); 

// Event script 
chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) { 
    if(command == "openHistory") { 
    chrome.tabs.create({'url': 'chrome://history'}); 
    } 
}); 
+0

這正是我所做的工作! 你回答這個就像我在貼我的,謝謝! :d –

2

代碼在Chrome中打開新的活動標籤與歷史的內部頁面

chrome.tabs.create({'url': 'chrome://history', 'active': true}); 
+0

我沒有說明這是一個內容腳本。 [這個線程](http://stackoverflow.com/questions/10667178/chrome-tabs-create-is-giving-an-error-uncaught-typeerror-cannot-call-method)說,內容腳本不能訪問任何擴展API除[chrome.extension](https://developer.chrome.com/extensions/extension)的部分外。 當我運行這個,它給了我這個錯誤: '不能讀取未定義的屬性'創建' –

+1

@JosephNewman你將不得不消息的背景/活動頁面來做到這一點。 – Xan

2

Wolf War's response給我的想法發送消息給我延長本身有它從那裏,該工作啓動選項卡。

我加入這個向注射頁面上的按鈕,我的內容腳本:

$("#history_button").click(function() { 
    chrome.runtime.sendMessage({ 
     type: "OPEN_HISTORY" 
    }); 
}); 

在我的分機background script創建該選項卡中添加相應的監聽器:

chrome.runtime.onMessage.addListener(function(request) { 
    if (request.type == "OPEN_HISTORY") { 
     chrome.tabs.create({ "url": "chrome://history", "active": true }); 
    } 
}); 
相關問題