屏幕取詞眷唉,專治各種收費(fèi)應(yīng)用

document.addEventListener("mousemove", update_mouse_pos, true);
document.addEventListener("mouseup", on_mouse_up, true);
document.addEventListener("mousedown", on_mouse_down, true);
document.addEventListener("dblclick", on_mouse_dbclick, true);

var clientX, clientY;
// 鼠標(biāo)按下的位置,用于判斷鼠標(biāo)是不是有很大的位移
var mouse_down_x, mouse_down_y;

function onText(resonse) {
}

/* 接受到取詞通知時(shí)候的回調(diào)函數(shù) */
chrome.extension.onRequest.addListener(function(request, sender, sendResponse) 
{
    if(request.action == "onmsg") 
    {
        var word = get_word_by_mouse();
        if (word.text && word.text.length > 0)
         {
            if (word.text.length > 300) 
            {
                if (word.pos == -1) 
                {
                    word.text = word.text.substring(0, 300);
                } 
                else {
                    var start = Math.max(0, word.pos - 150);
                    var end = Math.min(word.text.length, word.pos + 150);
                    if (start == 0) 
                    {
                        end = start + 300;
                    } 
                    else if (end == word.text.length)
                    {
                        start = end - 300;
                    }
                    word.pos = word.pos - start;
                    word.text = word.text.substring(start, end);
                }
            }
            chrome.extension.sendRequest({action:"word", msg: word.text, offset: word.pos}, onText)  //返回后臺(tái)蛤虐,發(fā)送詞語(yǔ)
        }
   }
});
function update_mouse_pos(event) {
  clientX = event.clientX, clientY = event.clientY;
}

/* 得到鼠標(biāo)位置所指的詞語(yǔ) */
function get_word_by_mouse() {
    var ret = { text: "", pos: -1};
    if (clientY  == 0 || clientY == 0) {
        return ret;
    }
    var r = document.caretRangeFromPoint(clientX, clientY);
    if (!r) {
        return ret;
    }
    if (r.startContainer.data) {
        var rcText = null;
        if (r.startContainer.getBoundingClientRect) {
            rcText = r.startContainer.getBoundingClientRect();
        } else if (r.startContainer.parentElement && r.startContainer.parentElement.getBoundingClientRect) {
            rcText = r.startContainer.parentElement.getBoundingClientRect();
        }
        if (rcText == null || (rcText && rcText.left < clientX && clientX < rcText.right && rcText.top < clientY && clientY < rcText.bottom)) {
            ret.text = r.startContainer.data;
            ret.pos = r.startOffset;
            return ret;
        }
    }
    return ret;
}
;

function on_mouse_down(event) {
    mouse_down_x = event.clientX;
    mouse_down_y = event.clientY;
}


function on_mouse_up(event) {
    if ( Math.abs(event.clientX - mouse_down_x) > 2 || Math.abs(event.clientY - mouse_down_y) > 2)
    {
        var sText = document.selection == undefined ? document.getSelection().toString():document.selection.createRange().text;
        if (sText != "")
        {
            // todo: 字符串過長(zhǎng)的問題.
            if (sText.length >2000)
                sText = sText.substr(0, 2000);
            chrome.extension.sendRequest({action:"stroke", msg:sText}, onText);
            console.log(sText);
        }
    }
}

function on_mouse_dbclick(event) {
    var sText = document.selection == undefined ? document.getSelection().toString():document.selection.createRange().text;
    if (sText != "")
    {
        // todo: 字符串過長(zhǎng)的問題.
        if (sText.length > 2000)
            sText = sText.substr(0, 2000);
        chrome.extension.sendRequest({action:"stroke", msg:sText}, onText);
        console.log(sText);
    }
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市饲常,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌贝淤,老刑警劉巖政供,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異布隔,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)招刨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門哀军,熙熙樓的掌柜王于貴愁眉苦臉地迎上來打却,“玉大人沦寂,你說我怎么就攤上這事淘衙。” “怎么了彤守?”我有些...
    開封第一講書人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)侈离。 經(jīng)常有香客問我,道長(zhǎng)卦碾,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任洲胖,我火速辦了婚禮坯沪,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘腐晾。我一直安慰自己,他們只是感情好藻糖,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著榄棵,像睡著了一般潘拱。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上芦岂,一...
    開封第一講書人閱讀 51,737評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音禽最,去河邊找鬼袱饭。 笑死呛占,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的晾虑。 我是一名探鬼主播,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼糙捺,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了洪灯?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤签钩,失蹤者是張志新(化名)和其女友劉穎坏快,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體假消,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年臼予,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片粘拾。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡创千,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出追驴,到底是詐尸還是另有隱情,我是刑警寧澤殿雪,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站爸业,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏扯旷。R本人自食惡果不足惜拯爽,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一毯炮、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧否副,春花似錦汉矿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)男翰。三九已至,卻和暖如春蛾绎,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背租冠。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工薯嗤, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人骆姐。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像玻褪,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子带射,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355