10

Piszę rozszerzenie Chrome, które przechwytuje zaznaczenie tekstu użytkownika i wysyła zaznaczony tekst do wyszukiwarki Google.Przechwytywanie zaznaczonego tekstu w Dokumentach Google

manifest.json

{ 
    "manifest_version": 2, 

    "name": "Selection Extension", 
    "description": "Search your selected text", 
    "version": "1.0", 
    "permissions": [ 
    "tabs", 
    "http://*/*", 
    "https://*/*" 
    ], 
    "background": { 
    "scripts": [ 
     "background.js" 
    ], 
    "persistent": false 
    }, 
    "browser_action": { 
    "default_icon": "icon.png", 
    "default_title": "Mark it!!" 
    }, 
    "content_scripts": [ 
    { 
     "matches": ["<all_urls>"], 
     "js": ["content_script.js"] 
    } 
    ] 

content_script.js

chrome.extension.onMessage.addListener(function(request, sender, sendResponse) { 
    if (request.method == "getSelection") { 
     sendResponse({data: window.getSelection().toString()}); 
    } else { 
     sendResponse({}); 
    } 
}); 

background.js

function initBackground() { 

    chrome.browserAction.onClicked.addListener(function(tab) { 
     chrome.tabs.sendMessage(tab.id, {method: "getSelection"}, function(response){ 
      sendServiceRequest(response.data); 
     }); 
    }); 
} 

function sendServiceRequest(selectedText) { 
    var serviceCall = 'http://www.google.com/search?q=' + selectedText; 
    chrome.tabs.create({url: serviceCall}); 
} 

initBackground(); 

Ten dorsz e działa w celu selekcji na stronach internetowych (takich jak Gmail, Facebook, wiadomości.). Chcę również móc wybrać zaznaczenie w formacie PDF i Dokumenty Google (wyświetlane w przeglądarce). W takich przypadkach: window.getSelection zwraca pusty ciąg ...

Ktoś wie, jak to zrobić?

+0

Dziękuję za to! Usuwam executeScript. –

+0

Dla google-docs istnieją elementy HTML z klasą "nakładka kix-selection". Ta klasa jest faktycznym elementem div, który tworzy wygląd selekcji (to jest tło turkusowe). Ale w żaden sposób nie jest połączony z elementem div zawierającym tekst ... –

+0

Odnośnie pliku PDF: https://stackoverflow.com/questions/15527095/how-extension-get-the-text-selected-in-chrome-pdf- viewer –

Odpowiedz

5

Dokument Google Docs nie podąża normalnie do sposobu dostępu do tekstu z rozszerzenia. mam z tego powodu stworzyliśmy narzędzie do pracy z Google Docs, który można znaleźć here

Powinno to umożliwić Ci:

//contentScript.js 
var googleDocument = googleDocsUtil.getGoogleDocument(); 
console.log("The selected text is: " + googleDocument.selectedText); 
+0

Czy możesz podać dokładny kod snipped - tylko w celu uzyskania zaznaczonego tekstu? –

1

Formularz ten można uzyskać z menu kontekstowego. Założę się, że i tak dodasz element menu kontekstowego.

chrome.contextMenus.create({ 
    id:"g-search", 
    title:"Search %s", 
    contexts:["selection"] 
}); 

chrome.contextMenus.onClicked.addListener(function(sel){ 
    console.log(sel.selectionText); 
}); 
+1

Dziękujemy, ale to podejście jest blokowane w przypadku Dokumentów Google - zamiast menu kontekstowego przeglądarki użytkownik widzi menu kontekstowe Dokumentów Google. –

+0

Jeśli chcesz, możesz dodać element menu Dokumenty Google, który wyłącza menu Dokumentów Google. To znaczy. wyłącz to menu i zezwól rodzimym. –