Created
October 2, 2012 15:52
-
-
Save khris/3820346 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* | |
* It's under MPL 1.1 | |
* See http://www.mozilla.org/MPL/1.1/ | |
* You can install this from https://addons.mozilla.org/ko/firefox/addon/naver-endic/ | |
* | |
*/ | |
let { Ci, Cc } = require("chrome"); | |
let Panel = require("panel").Panel; | |
let selection = require("selection"); | |
const windowMediator = Cc["@mozilla.org/appshell/window-mediator;1"]. | |
getService(Ci.nsIWindowMediator); | |
let node_ = null; | |
function context() { | |
return windowMediator.getMostRecentWindow("navigator:browser").document. | |
commandDispatcher.focusedWindow; | |
} | |
function trimStr(src) { | |
return src.replace(/^[\0\s]+|[\0\s]+$/g,''); | |
} | |
exports.main = function() { | |
let dictionaryPanel = new Panel({ | |
id: "dictionaryPanel", | |
width: 405, | |
height: 513, | |
onHide: function() { | |
node_.parentNode.removeChild(node_); | |
node_ = null; | |
} | |
}); | |
let onSelection = function () { | |
if (typeof(selection.text) == 'string') { | |
var selected_text = trimStr(selection.text); | |
if (selected_text.length > 0) { | |
dictionaryPanel.contentURL = 'http://endic.naver.com/popManager.nhn?m=search&query=' + selected_text; | |
let window_ = context(); | |
let selection_ = window_.getSelection(); | |
if (selection_.rangeCount < 1) { | |
return; | |
} | |
let curElement = window_.document.activeElement; | |
if (curElement.nodeName.toLowerCase() == 'textarea' | |
|| curElement.nodeName.toLowerCase() == 'input') { | |
return; | |
} | |
console.log(['\n'+prop+': '+selection_.anchorNode[prop] for (prop in selection_.anchorNode)].join('')); | |
let range_ = selection_.getRangeAt(0); | |
try { | |
if (node_ && node_.parentNode) { | |
node_.parentNode.removeChild(node_); | |
} else { | |
node_ = window_.document.createElement("span"); | |
} | |
} catch (e if e instanceof TypeError) { | |
node_ = window_.document.createElement("span"); | |
} finally { | |
range_.insertNode(node_); | |
dictionaryPanel.show(node_); | |
} | |
} | |
} | |
}; | |
selection.on('select', onSelection); | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment