2017-02-16 62 views
-1

一個小問題,而試圖建立一個Chrome擴展。目標很簡單,我知道現在有關於此事的帖子,但無論我發現什麼都不適合我。感覺像在普通腳本(html/js)中工作的內容在chrome擴展中不起作用。JS - Chrome擴展 - 交通選擇

我試圖做一個簡單的擴展,它在點擊相應的圖標將獲得選擇(至少文本,如果可能的話更多信息),但不知它不工作。我得到一個選擇項目,但它是一個空的選擇。

這是代碼。 manifest.json的

{ 
    "manifest_version": 2, 

    "name": "Paster", 
    "description": "Bla", 
    "version": "1.0", 

    "browser_action": { 
    "default_icon": "camera.png", 
    "default_title": "Bla" 
    }, 

    "background": { 
    "page": "background.html" 
    }, 

    "permissions": [ 
    "tabs", 
    "activeTab", 
    "https://ajax.googleapis.com/", 
    "clipboardRead", 
    "clipboardWrite" 
    ] 
} 

background.html

<textarea id="temp_textarea_draft_paster"></textarea> 
<div>BLA BLA BLA</div> 
<script src="jquery-3.1.1.min.js"></script> 
<script src="background.js"></script> 

background.js

chrome.browserAction.onClicked.addListener(function() { 
    getSelectionText() 
}); 

getSelectionText = function (info, tab) { 
    selection = window.getSelection(); 
    console.log(selection); 
    alert('yeah' + selection); 
}; 

如果我從background.html打開開發者控制檯中我得到的console.log但與空的選擇,無論我選擇了什麼。警報也彈出,但只是'是的'。

如果我去了鍍鉻的擴展://ext-id/background.html頁,選擇一個文本,然後按一下按鈕,它有一個選擇,包括它的數據...如何來工作的?感覺就像擴展程序沒有從選項卡中獲得選擇,只是從background.html頁面中選擇。

+1

請參閱這個http://stackoverflow.com/questions/12424631/get-selected-text-in-a-chrome-extension它使用'chrome contextMenu API執行' – nivas

+1

閱讀文檔。 https://developer.chrome.com/extensions/overview#arch –

+0

我建議你閱讀[Chrome擴展概述](https://developer.chrome.com/extensions/overview)(也許還有頁面從概述鏈接)。[體系結構部分](https://developer.ch rome.com/extensions/overview#arch)有全面的架構信息,這些信息應該有助於你理解事物的組織/完成方式。您可能還需要閱讀[內容腳本](https://developer.chrome.com/extensions/content_scripts)和[消息傳遞](https://developer.chrome.com/extensions/messaging)。 – Makyen

回答

1

後我發現了相當多的研究解決方案。是的,閱讀文檔(再次)建議幫助,但我仍然認爲這不是太清楚解釋。但是,如果有人得到了相同的問題,它可以理解,background.js只鏈接到background.html而不是網頁的內容被證實有效標籤。

相反,內容腳本在活動頁面內被「添加」或「應用」,因此可以使用諸如window.getSelection()之類的函數。

操作步驟如下:

的manifest.json指的是你要在活動頁面內,以及在相關的「匹配」,被「插入」 content_scripts。 (它會影響到哪個頁面,例如「」)

當觸發瀏覽器動作(點擊圖標)並且內容腳本將聽取此消息時,您的背景頁面可以向內容腳本發送消息(https://developer.chrome.com/extensions/messaging)並回復getSelection結果