10

Tôi đang viết tiện ích mở rộng của Chrome để ghi lại lựa chọn văn bản của người dùng và gửi văn bản đã chọn tới tìm kiếm của Google.Chọn văn bản trong Google Tài liệu

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(); 

cá tuyết này e hoạt động để lựa chọn trong các trang web (chẳng hạn như Gmail, Facebook, tin tức.) Tôi cũng muốn có thể có được lựa chọn trong PDF và Google Tài liệu (được xem trong trình duyệt). Trong các trường hợp sau: window.getSelection trả về một chuỗi trống ...

Ai đó biết cách thực hiện?

+0

Cảm ơn bạn vì điều này! Tôi sẽ loại bỏ các executeScript. –

+0

Đối với tài liệu google, có một phần tử HTML có lớp "kix-selection-overlay". Lớp này là div thực tế tạo ra giao diện lựa chọn (tức là nền teal). Nhưng nó không được kết nối trong anyway để div có chứa các văn bản ... –

+0

Về PDF: https://stackoverflow.com/questions/15527095/how-extension-get-the-text-selected-in-chrome-pdf- người xem –

Trả lời

5

Tài liệu Google Documents không thực sự theo các cách thông thường về cách truy cập văn bản từ Tiện ích mở rộng. Tôi có vì lý do này đã tạo ra một công cụ để làm việc với Google Docs, có thể được tìm thấy here

này nên cho phép bạn:

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

Bạn có thể chia sẻ mã chính xác được không - chỉ để nhận văn bản đã chọn? –

1

Bạn có thể có được điều này từ menu ngữ cảnh. Tôi đặt cược bạn sẽ được thêm một mục trình đơn ngữ cảnh anyway.

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

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

Cảm ơn bạn nhưng cách tiếp cận này bị chặn cho Google Documents - thay vì menu ngữ cảnh của người dùng trình duyệt, hãy xem trình đơn ngữ cảnh của Google Documents. –

+0

Nếu bạn muốn, bạn có thể thêm mục trình đơn tài liệu Google để tắt trình đơn tài liệu của Google. I E. vô hiệu hóa menu này và cho phép tự nhiên. –

Các vấn đề liên quan