📄 spell-check-ui.js
字号:
var select = document.getElementById("v_suggestions");
select.onchange = function() {
document.getElementById("v_replacement").value = this.value;
};
if (is_ie) {
select.attachEvent("ondblclick", replaceClicked);
} else {
select.addEventListener("dblclick", replaceClicked, true);
}
document.getElementById("b_replace").onclick = replaceClicked;
// document.getElementById("b_learn").onclick = learnClicked;
document.getElementById("b_replall").onclick = replaceAllClicked;
document.getElementById("b_ignore").onclick = ignoreClicked;
document.getElementById("b_ignall").onclick = ignoreAllClicked;
//document.getElementById("b_recheck").onclick = recheckClicked;
document.getElementById("b_revert").onclick = revertClicked;
// document.getElementById("b_info").onclick = displayInfo;
document.getElementById("b_remdup").onclick = removeClicked;
document.getElementById("b_ok").onclick = saveClicked;
document.getElementById("b_cancel").onclick = cancelClicked;
//select = document.getElementById("v_dictionaries");
//select.onchange = function() {
// document.getElementById("f_dictionary").value = this.value;
//};
};
function getAbsolutePos(el) {
var r = { x: el.offsetLeft, y: el.offsetTop };
if (el.offsetParent) {
var tmp = getAbsolutePos(el.offsetParent);
r.x += tmp.x;
r.y += tmp.y;
}
return r;
};
function wordClicked(scroll) {
var self = this;
if (scroll) (function() {
var pos = getAbsolutePos(self);
var ws = { x: frame.offsetWidth - 4,
y: frame.offsetHeight - 4 };
var wp = { x: frame.contentWindow.document.body.scrollLeft,
y: frame.contentWindow.document.body.scrollTop };
pos.x -= Math.round(ws.x/2);
if (pos.x < 0) pos.x = 0;
pos.y -= Math.round(ws.y/2);
if (pos.y < 0) pos.y = 0;
frame.contentWindow.scrollTo(pos.x, pos.y);
})();
if (currentElement) {
var a = allWords[currentElement.__msh_origWord];
currentElement.className = currentElement.className.replace(/\s*HA-spellcheck-current\s*/g, " ");
for (var i = 0; i < a.length; ++i) {
var el = a[i];
if (el != currentElement) {
el.className = el.className.replace(/\s*HA-spellcheck-same\s*/g, " ");
}
}
}
currentElement = this;
this.className += " HA-spellcheck-current";
var a = allWords[currentElement.__msh_origWord];
for (var i in a) {
var el = a[i];
if (el != currentElement) {
el.className += " HA-spellcheck-same";
}
}
// BR
document.getElementById("b_revert").disabled = true;
document.getElementById("b_replace").disabled = true;
document.getElementById("b_ignore").disabled = false;
document.getElementById("b_replall").disabled = true;
document.getElementById("b_ignall").disabled = (a.length <= 1);
// end BR
//document.getElementById("b_replall").disabled = (a.length <= 1);
//document.getElementById("b_ignall").disabled = (a.length <= 1);
// end BR
var txt;
if (a.length == 1) {
txt = "one occurrence";
} else if (a.length == 2) {
txt = "two occurrences";
} else {
txt = a.length + " occurrences";
}
// br - duplicate changes
var duplicate = duplicated_words["key" + this.__msh_id];
var suggestions;
var select = document.getElementById("v_suggestions");
for (var i = select.length; --i >= 0;) {
select.remove(i);
}
if (!/true/.test(duplicate)) {
suggestions = suggested_words[this.__msh_origWord];
if (suggestions)
suggestions = suggestions.split(/,/);
else
suggestions = [];
document.getElementById("statusbar").innerHTML = "Found " + txt +
' for word "<b>' + currentElement.__msh_origWord + '</b>"';
for (var i = 0; i < suggestions.length; ++i) {
var txt = suggestions[i];
var option = document.createElement("option");
option.value = txt;
option.appendChild(document.createTextNode(txt));
select.appendChild(option);
}
}
document.getElementById("v_currentWord").innerHTML = this.__msh_origWord;
if (duplicate) {
document.getElementById("v_replacement").disabled = true;
select.disabled = true;
document.getElementById("b_remdup").disabled = false;
}
else if (suggestions.length > 0) {
// BR
select.disabled = false;
document.getElementById("v_replacement").disabled = false;
document.getElementById("b_remdup").disabled = true;
document.getElementById("b_replace").disabled = false;
document.getElementById("b_replall").disabled = (a.length <= 1);
// end BR
select.selectedIndex = 0;
select.onchange();
} else {
document.getElementById("b_remdup").disabled = true;
document.getElementById("v_replacement").disabled = false;
document.getElementById("v_replacement").value = this.innerHTML;
// BR
select.disabled = true;
}
select.style.display = "none";
select.style.display = "block";
// BR
if (currentElement.innerHTML != currentElement.__msh_origWord) {
document.getElementById("b_revert").disabled = false;
}
else {
document.getElementById("b_revert").disabled = true;
}
// end BR
return false;
};
function wordMouseOver() {
this.className += " HA-spellcheck-hover";
};
function wordMouseOut() {
this.className = this.className.replace(/\s*HA-spellcheck-hover\s*/g, " ");
};
function displayInfo() {
var info = frame.contentWindow.spellcheck_info;
if (!info)
alert("No information available");
else {
var txt = "** Document information **";
for (var i in info) {
txt += "\n" + i + " : " + info[i];
}
alert(txt);
}
return false;
};
function finishedSpellChecking() {
// initialization of global variables
currentElement = null;
wrongWords = null;
allWords = {};
fixedWords = [];
suggested_words = frame.contentWindow.suggested_words;
duplicated_words = frame.contentWindow.duplicated_words;
document.getElementById("status").innerHTML = "Spell Checker";
// br
//HTMLArea Spell Checker (<a href='readme-tech.html' target='_blank' title='Technical information'>info</a>)";
var doc = frame.contentWindow.document;
var spans = doc.getElementsByTagName("span");
var sps = [];
var id = 0;
for (var i = 0; i < spans.length; ++i) {
var el = spans[i];
if (/HA-spellcheck-error/.test(el.className)) {
sps.push(el);
el.__msh_wordClicked = wordClicked;
el.onclick = function(ev) {
ev || (ev = window.event);
ev && HTMLArea._stopEvent(ev);
return this.__msh_wordClicked(false);
};
el.onmouseover = wordMouseOver;
el.onmouseout = wordMouseOut;
el.__msh_id = id++;
var txt = (el.__msh_origWord = el.firstChild.data);
el.__msh_fixed = false;
if (typeof allWords[txt] == "undefined") {
allWords[txt] = [el];
}
else {
allWords[txt].push(el);
}
}
else if (/HA-spellcheck-fixed/.test(el.className)) {
fixedWords.push(el);
}
}
wrongWords = sps;
if (sps.length == 0) {
if (!modified) {
alert(i18n["NO_ERRORS_CLOSING"]);
window.close();
}
else {
alert(i18n["NO_ERRORS"]);
}
return false;
}
(currentElement = sps[0]).__msh_wordClicked(true);
var as = doc.getElementsByTagName("a");
for (var i = as.length; --i >= 0;) {
var a = as[i];
a.onclick = function() {
if (confirm(i18n["CONFIRM_LINK_CLICK"] + ":\n" +
this.href + "\n" + i18n["I will open it in a new page."])) {
window.open(this.href);
}
return false;
};
}
var dicts = doc.getElementById("HA-spellcheck-dictionaries");
if (dicts) {
dicts.parentNode.removeChild(dicts);
dicts = dicts.innerHTML.split(/,/);
var select = document.getElementById("v_dictionaries");
for (var i = select.length; --i >= 0;) {
select.remove(i);
}
for (var i = 0; i < dicts.length; ++i) {
var txt = dicts[i];
var option = document.createElement("option");
if (/^@(.*)$/.test(txt)) {
txt = RegExp.$1;
option.selected = true;
}
option.value = txt;
option.appendChild(document.createTextNode(txt));
select.appendChild(option);
}
}
// enable buttons - BR
document.getElementById("v_replacement").disabled = false;
// don't need to unset this because it's done in replacementTextEntered
//document.getElementById("b_replace").disabled = false;
// don't need to unset this because it's done above in wordClicked
//document.getElementById("b_replall").disabled = false;
document.getElementById("b_ignore").disabled = false;
// don't need to unset this because it's done above in wordClicked
//document.getElementById("b_ignall").disabled = false;
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -