2011-12-07 285 views
1

隔絕的世界(擴展JS和JS網頁)之間的通信。如你所知,在Chrome擴展和網頁js文件不能直接互相訪問,他們在世界上孤立運行。在Chrome擴展

不過,我想訪問某些功能的頁面上,並從插件調用這些函數。

而且我不想讓我自己的那些功能的版本。

我不知道這是否可能?希望瞭解所有的答案。

編輯:功能背景頁上。它是一個瀏覽器動作擴展。

更多信息:基本上,我有它創建了一個選項卡,提交網址到頁面的上下文菜單。但是,重新打開頁面會使許多選項卡和打開很多頁面需要時間。因此,如果頁面的一個實例已經打開,我願意直接從擴展中調用頁面上的JavaScript函數。我有權訪問該頁面。

TL; DR:需要一種方法來從擴展中調用頁面上的javascript函數(不在本地複製)。

+0

你能更具體地說明這些功能在哪裏嗎? background_pages,content_scripts,browser_action彈出窗口? – abraham

+0

它來自帶有browser_action擴展類型的後臺頁面。更新了具體問題。 – Sina

+0

該頁面是否需要在網頁上運行擴展頁面或頁面?如果它是網頁上的一個頁面,您是否可以修改代碼或者您是否無法控制從服務器返回的內容? – abraham

回答

3

假設你知道你要調用其功能頁面的標籤ID,您可以使用chrome.tabs.update(tabId, {url: 'javascript:functionNameHere()'});從您的擴展頁。這是可行的,因爲JavaScript:URLs是mapped以在主要(即頁面,而非隔離)世界中執行腳本。

+0

完美的答案。儘管作爲一名有經驗的開發人員,我完全忘記了運行內聯JS。感謝Mihai :) – Sina