10

में टेक्स्ट चयन कैप्चर करें मैं एक क्रोम एक्सटेंशन लिख रहा हूं जो उपयोगकर्ता टेक्स्ट चयन को कैप्चर करता है और चयनित टेक्स्ट को Google खोज में भेजता है।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(); 

यह कॉड ई वेबपृष्ठों में चयन के लिए काम करता है (जैसे जीमेल, फेसबुक, समाचार।) मैं भी पीडीएफ में चयन प्राप्त करने में सक्षम होना चाहता हूं, और Google डॉक्स (ब्राउज़र में देखा गया)। इन मामलों में: window.getSelection एक खाली स्ट्रिंग देता है ...

कोई जानता है कि यह कैसे करें?

+0

इसके लिए धन्यवाद! मैं executeScript हटा दूंगा। –

+0

Google-डॉक्स के लिए क्लास "किक्स-चयन-ओवरले" श्रेणी वाले HTML तत्व हैं। यह वर्ग वास्तविक div है जो चयन लुक बनाता है (यानी टेल पृष्ठभूमि)। लेकिन यह किसी भी तरह से div में शामिल नहीं है जिसमें पाठ है ... –

+0

पीडीएफ के संबंध में: https://stackoverflow.com/questions/15527095/how-extension-get-the-text-selected-in-chrome-pdf- दर्शक –

उत्तर

5

Google डॉक्स दस्तावेज़ वास्तव में एक्सटेंशन से टेक्स्ट तक पहुंचने के सामान्य तरीकों का पालन नहीं करता है। आप संदर्भ मेनू से प्राप्त कर सकते हैं

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

क्या आप कृपया चयनित कोड प्राप्त करने के लिए केवल सही कोड साझा कर सकते हैं? –

1

: मैं इस कारण के लिए है गूगल डॉक्स, here

पाया जा सकता है यह करने के लिए सक्षम होना चाहिए के साथ काम करने के लिए एक उपकरण बनाया। मुझे यकीन है कि आप वैसे भी एक संदर्भ मेनू आइटम जोड़ देंगे।

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

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

धन्यवाद लेकिन यह दृष्टिकोण Google डॉक्स के लिए अवरुद्ध है - ब्राउज़र उपयोगकर्ता के संदर्भ मेनू के बजाय Google डॉक्स का संदर्भ मेनू देखें। –

+0

यदि आप चाहते हैं कि आप Google दस्तावेज़ मेनू आइटम जोड़ सकें जो Google दस्तावेज़ मेनू को अक्षम करता है। अर्थात। इस मेनू को अक्षम करें और देशी को अनुमति दें। –

संबंधित मुद्दे