📄 spell-check-ui.js
字号:
// Spell Checker Plugin for HTMLArea-3.0
// Sponsored by www.americanbible.org
// Implementation by Mihai Bazon, http://dynarch.com/mishoo/
//
// (c) dynarch.com 2003.
// Distributed under the same terms as HTMLArea itself.
// This notice MUST stay intact for use (see license.txt).
//
// $Id: spell-check-ui.js 17131 2005-08-23 23:30:49Z bruce $
// internationalization file was already loaded in parent ;-)
var SpellChecker = window.opener.SpellChecker;
var i18n = SpellChecker.I18N;
var HTMLArea = window.opener.HTMLArea;
var is_ie = HTMLArea.is_ie;
var editor = SpellChecker.editor;
var frame = null;
var currentElement = null;
var wrongWords = null;
var modified = false;
var allWords = {};
var fixedWords = [];
var suggested_words = {};
var duplicated_words = {};
function makeCleanDoc(leaveFixed) {
// document.getElementById("status").innerHTML = 'Please wait: rendering valid HTML';
var words = wrongWords.concat(fixedWords);
for (var i = words.length; --i >= 0;) {
var el = words[i];
if (!(leaveFixed && /HA-spellcheck-fixed/.test(el.className))) {
if (el.firstChild) {
el.parentNode.insertBefore(el.firstChild, el);
}
el.parentNode.removeChild(el);
} else
el.className = "HA-spellcheck-fixed";
}
// we should use innerHTML here, but IE6's implementation messes up the
// HTML to such extent that our poor Perl parser doesn't understand it
// anymore.
return window.opener.HTMLArea.getHTML(frame.contentWindow.document.body, false, editor);
};
//function recheckClicked() {
// document.getElementById("status").innerHTML = i18n["Please wait: changing dictionary to"] + ': "' + document.getElementById("f_dictionary").value + '".';
// var field = document.getElementById("f_content");
// field.value = makeCleanDoc(true);
// field.form.submit();
//};
function saveClicked() {
if (modified) {
editor.setHTML(makeCleanDoc(false));
}
window.close();
return false;
};
function cancelClicked() {
var ok = true;
if (modified) {
ok = confirm(i18n["QUIT_CONFIRMATION"]);
}
if (ok) {
window.close();
}
return false;
};
function replaceWord(el) {
var replacement = document.getElementById("v_replacement").value;
var this_word_modified = (el.innerHTML != replacement);
if (this_word_modified)
modified = true;
if (el) {
el.className = el.className.replace(/\s*HA-spellcheck-(hover|fixed)\s*/g, " ");
}
el.className += " HA-spellcheck-fixed";
el.__msh_fixed = true;
if (!this_word_modified) {
return false;
}
el.innerHTML = replacement;
};
// BR
function removeWord(el) {
var replacement = "";
modified = true;
if (el) {
el.className = el.className.replace(/\s*HA-spellcheck-(hover|fixed)\s*/g, " ");
}
el.className += " HA-spellcheck-fixed";
el.__msh_fixed = true;
el.innerHTML = replacement;
};
function removeClicked() {
removeWord(currentElement);
var start = currentElement.__msh_id;
var index = start;
do {
++index;
if (index == wrongWords.length) {
index = 0;
}
} while ((index != start) && wrongWords[index].__msh_fixed);
if (index == start) {
index = 0;
if (confirm(i18n["Finished list of mispelled words"])) {
editor.setHTML(makeCleanDoc(false));
window.close();
return false;
}
}
document.getElementById("b_revert").disabled = true;
document.getElementById("b_replace").disabled = true;
document.getElementById("b_ignore").disabled = true;
document.getElementById("b_replall").disabled = true;
document.getElementById("b_ignall").disabled = true;
document.getElementById("b_remdup").disabled = true;
wrongWords[index].__msh_wordClicked(true);
return false;
};
// end BR
function replaceClicked() {
replaceWord(currentElement);
var start = currentElement.__msh_id;
var index = start;
do {
++index;
if (index == wrongWords.length) {
index = 0;
}
} while ((index != start) && wrongWords[index].__msh_fixed);
if (index == start) {
index = 0;
if (confirm(i18n["Finished list of mispelled words"])) {
editor.setHTML(makeCleanDoc(false));
window.close();
return false;
}
}
// BR
document.getElementById("b_revert").disabled = true;
document.getElementById("b_replace").disabled = true;
document.getElementById("b_ignore").disabled = true;
document.getElementById("b_replall").disabled = true;
document.getElementById("b_ignall").disabled = true;
document.getElementById("b_remdup").disabled = true;
// end BR
wrongWords[index].__msh_wordClicked(true);
return false;
};
// BR
function replacementTextEntered() {
if (currentElement.innerHTML != document.getElementById("v_replacement").value) {
document.getElementById("b_replace").disabled = false;
var a = allWords[currentElement.__msh_origWord];
document.getElementById("b_replall").disabled = (a.length <= 1);
document.getElementById("b_ignall").disabled = (a.length <= 1);
}
else {
document.getElementById("b_replace").disabled = true;
document.getElementById("b_replall").disabled = true;
var a = allWords[currentElement.__msh_origWord];
document.getElementById("b_ignall").disabled = (a.length <= 1);
}
}
// end BR
function revertClicked() {
document.getElementById("v_replacement").value = currentElement.__msh_origWord;
replaceWord(currentElement);
currentElement.className = "HA-spellcheck-error HA-spellcheck-current";
// BR
document.getElementById("b_revert").disabled = true;
document.getElementById("b_replace").disabled = true;
document.getElementById("b_ignore").disabled = true;
document.getElementById("b_replall").disabled = true;
document.getElementById("b_ignall").disabled = true;
document.getElementById("b_remdup").disabled = true;
// end BR
return false;
};
function replaceAllClicked() {
var replacement = document.getElementById("v_replacement").value;
var ok = true;
var spans = allWords[currentElement.__msh_origWord];
if (spans.length == 0) {
alert("A condition that should be impossible just happened. Please report this error to Jive Software");
} else if (spans.length == 1) {
replaceClicked();
return false;
}
/*
var message = "The word \"" + currentElement.__msh_origWord + "\" occurs " + spans.length + " times.\n";
if (replacement == currentElement.__msh_origWord) {
ok = confirm(message + "Ignore all occurrences?");
} else {
ok = confirm(message + "Replace all occurrences with \"" + replacement + "\"?");
}
*/
if (ok) {
for (var i = 0; i < spans.length; ++i) {
if (spans[i] != currentElement) {
replaceWord(spans[i]);
}
}
// replace current element the last, so that we jump to the next word ;-)
replaceClicked();
}
return false;
};
function ignoreClicked() {
document.getElementById("v_replacement").value = currentElement.__msh_origWord;
replaceClicked();
return false;
};
function ignoreAllClicked() {
document.getElementById("v_replacement").value = currentElement.__msh_origWord;
replaceAllClicked();
return false;
};
function learnClicked() {
alert("Not [yet] implemented");
return false;
};
function internationalizeWindow() {
var types = ["div", "span", "button"];
for (var i = 0; i < types.length; ++i) {
var tag = types[i];
var els = document.getElementsByTagName(tag);
for (var j = els.length; --j >= 0;) {
var el = els[j];
if (el.childNodes.length == 1 && /\S/.test(el.innerHTML)) {
var txt = el.innerHTML;
if (typeof i18n[txt] != "undefined") {
el.innerHTML = i18n[txt];
}
}
}
}
};
function initDocument() {
internationalizeWindow();
modified = false;
frame = document.getElementById("i_framecontent");
var field = document.getElementById("f_content");
field.value = HTMLArea.getHTML(editor._doc.body, false, editor);
field.form.submit();
//document.getElementById("f_init").value = "0";
// assign some global event handlers
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -