亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Chrome擴展程序:如何捕獲所選文本并發送到網絡服務

Chrome擴展程序:如何捕獲所選文本并發送到網絡服務

子衿沉夜 2019-11-26 14:39:15
對于Google Chrome擴展程序,我需要捕獲網頁中的選定文本并將其發送到網絡服務。我被卡住了!首先,我嘗試了一個書簽,但是Mac上的Chrome似乎存在一些書簽問題,因此我決定編寫一個擴展程序。我在ext中使用以下代碼:function getSelText(){    var txt = 'nothing';    if (window.getSelection){        txt = "1" + window.getSelection();    } else if (document.getSelection) {        txt = "2" + document.getSelection();    } else if (document.selection) {        txt = "3" + document.selection.createRange().text;    } else txt = "wtf";    return txt;}var selection = getSelText();alert("selection = " + selection);單擊擴展名圖標時,我得到一個“ 1”。因此,我認為在瀏覽器窗口之外進行選擇的行為導致瀏覽器不再將文本視為“已選擇”。只是理論而已...有什么想法嗎?
查看完整描述

3 回答

?
湖上湖

TA貢獻2003條經驗 獲得超2個贊

使用content_scripts并不是一個很好的解決方案,因為它會注入包括iframe-ads等在內的所有文檔。我在其他頁面上得到的空文本選擇比在雜亂的網站上預期的翻倍還多。


更好的解決方案是僅將代碼注入所選選項卡,因為無論如何這就是您選擇的文本所在的位置。jQuery Doc ready部分的示例:


$(document).ready(function() {

    // set up an event listener that triggers when chrome.extension.sendRequest is fired.

    chrome.extension.onRequest.addListener(

        function(request, sender, sendResponse) {

            // text selection is stored in request.selection

            $('#text').val( request.selection );

    });


    // inject javascript into DOM of selected window and tab.

    // injected code send a message (with selected text) back to the plugin using chrome.extension.sendRequest

    chrome.tabs.executeScript(null, {code: "chrome.extension.sendRequest({selection: window.getSelection().toString() });"});

});


查看完整回答
反對 回復 2019-11-26
  • 3 回答
  • 0 關注
  • 857 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號