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);
}
}
屏幕取詞眷唉,專治各種收費(fèi)應(yīng)用
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門哀军,熙熙樓的掌柜王于貴愁眉苦臉地迎上來打却,“玉大人沦寂,你說我怎么就攤上這事淘衙。” “怎么了彤守?”我有些...
- 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)侈离。 經(jīng)常有香客問我,道長(zhǎng)卦碾,這世上最難降的妖魔是什么? 我笑而不...
- 正文 為了忘掉前任洲胖,我火速辦了婚禮坯沪,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘腐晾。我一直安慰自己,他們只是感情好藻糖,可當(dāng)我...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著榄棵,像睡著了一般潘拱。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上芦岂,一...
- 文/蒼蘭香墨 我猛地睜開眼糙捺,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了洪灯?” 一聲冷哼從身側(cè)響起,我...
- 序言:老撾萬(wàn)榮一對(duì)情侶失蹤签钩,失蹤者是張志新(化名)和其女友劉穎坏快,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體假消,經(jīng)...
- 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
- 正文 我和宋清朗相戀三年臼予,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片粘拾。...
- 正文 年R本政府宣布,位于F島的核電站爸业,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏扯旷。R本人自食惡果不足惜拯爽,卻給世界環(huán)境...
- 文/蒙蒙 一毯炮、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧否副,春花似錦汉矿、人聲如沸。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)男翰。三九已至,卻和暖如春蛾绎,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背租冠。 一陣腳步聲響...
- 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像玻褪,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子带射,可洞房花燭夜當(dāng)晚...