Скрипт транслитерации - Странные ошибки
Этот скрипт HTML транслитерирует каждое введенное в него слово, фразу или букву.
По сути, это неофициальный переводчик.
При тестировании кода с использованием jsFiddle у меня возникает следующая ошибка:
{"error": "Пожалуйста, используйте POST-запрос"}
Я правильно сохранил свой файл как.html и открыл его с помощью Google Chrome.
Все работает как таковое; Я могу транслитерировать текст, но в тот момент, когда я помещаю слишком много текста для транслитерации, текст внутри блоков опускается, и код (страница) по существу "обновляется" сам.
Однако этот код переводит небольшие фразы и слова.
Есть ли ограничение на количество символов для транслитерации?
Я не уверен, что указывает на ошибку, но я уверен, что вышеупомянутая ошибка jsFiddle соответствует этой.
Это озадачивает меня.
Код транслитерации выглядит следующим образом:
<html>
<head>
<title>English - Imzreth Translator</title>
<script>
validator = "aábcdeéfghjiíklmnoöpqrstuüvwxyzAÁBCDEÉFGHIJKLMNOÖPQRSTUÜVWXYZ’";
vowels = "aáeéiíoöuüyAÁEÉIÍOÖUÜY’";
aemap = new Array();
aemap["au"] = "a";
aemap["a"] = "a";
aemap["l"] = "b";
aemap["b"] = "b";
aemap["c"] = "c";
aemap["ku"] = "d";
aemap["d"] = "d";
aemap["u"] = "e";
aemap["u"] = "e";
aemap["f"] = "f";
aemap["gé"] = "g";
aemap["g"] = "g";
aemap["h"] = "h";
aemap["o"] = "i";
aemap["i"] = "i";
aemap["t"] = "j";
aemap["j"] = "j";
aemap["ré"] = "k";
aemap["k"] = "k";
aemap["l"] = "l";
aemap["m"] = "m";
aemap["q"] = "n";
aemap["n"] = "n";
aemap["i"] = "o";
aemap["o"] = "o";
aemap["ph"] = "p";
aemap["p"] = "p";
aemap["q"] = "q";
aemap["r"] = "r";
aemap["s"] = "s";
aemap["s"] = "t";
aemap["t"] = "t";
aemap["e"] = "u";
aemap["u"] = "u";
aemap["z"] = "v";
aemap["v"] = "v";
aemap["w"] = "w";
aemap["l"] = "x";
aemap["x"] = "x";
aemap["y"] = "y";
aemap["á"] = "y";
aemap["z"] = "z";
eamap = new Array();
eamap["a"] = "au";
eamap["b"] = "l";
eamap["c"] = "c";
eamap["d"] = "ku";
eamap["e"] = "u";
eamap["f"] = "f";
eamap["g"] = "gé";
eamap["h"] = "h";
eamap["i"] = "o";
eamap["j"] = "t";
eamap["k"] = "ré";
eamap["l"] = "l";
eamap["m"] = "m";
eamap["n"] = "n";
eamap["o"] = "i";
eamap["p"] = "ph";
eamap["q"] = "q";
eamap["r"] = "r";
eamap["s"] = "s";
eamap["t"] = "s";
eamap["u"] = "e";
eamap["v"] = "z";
eamap["w"] = "w";
eamap["x"] = "l";
eamap["y"] = "á";
eamap["z"] = "z";
eamap["A"] = "A";
eamap["B"] = "B";
eamap["C"] = "C";
eamap["D"] = "D";
eamap["E"] = "E";
eamap["F"] = "F";
eamap["G"] = "G";
eamap["H"] = "H";
eamap["I"] = "I";
eamap["J"] = "J";
eamap["K"] = "K";
eamap["L"] = "L";
eamap["M"] = "M";
eamap["N"] = "N";
eamap["O"] = "O";
eamap["P"] = "P";
eamap["Q"] = "Q";
eamap["R"] = "R";
eamap["S"] = "S";
eamap["T"] = "T";
eamap["U"] = "U";
eamap["V"] = "V";
eamap["W"] = "W";
eamap["X"] = "X";
eamap["Y"] = "Y";
eamap["Z"] = "Z";
promap = new Array();
promap["a"] = "aah";
promap["b"] = "buh";
promap["c"] = "se";
promap["d"] = "duh";
promap["e"] = "eh";
promap["f"] = "f";
promap["g"] = "guh";
promap["h"] = "h’";
promap["i"] = "íh";
promap["j"] = "juh";
promap["k"] = "kuh";
promap["l"] = "l’";
promap["m"] = "m";
promap["n"] = "n";
promap["o"] = "öh";
promap["p"] = "puh";
promap["q"] = "quah";
promap["r"] = "ra";
promap["s"] = "s";
promap["t"] = "t’uh";
promap["u"] = "ooh";
promap["v"] = "vuh";
promap["w"] = "wuh";
promap["x"] = "k’ss";
promap["y"] = "ya";
promap["z"] = "z";
promap["ph"] = "f’";
promap["au"] = "aw";
promap["gé"] = "zhé";
promap["á"] = "ahh";
promap["ku"] = "kü";
promap["A"] = "Á";
promap["B"] = "B’";
promap["C"] = "CÉ";
promap["D"] = "D’";
promap["E"] = "EH";
promap["F"] = "F’";
promap["G"] = "G’";
promap["H"] = "H’";
promap["I"] = "Í’";
promap["J"] = "J’";
promap["K"] = "K’";
promap["L"] = "L’";
promap["M"] = "M";
promap["N"] = "N";
promap["O"] = "Ö’";
promap["P"] = "P’";
promap["Q"] = "Q’";
promap["R"] = "RA";
promap["S"] = "SEE";
promap["T"] = "T’UH";
promap["U"] = "OOH";
promap["V"] = "VUH";
promap["W"] = "WUH";
promap["X"] = "K’SS";
promap["Y"] = "YA";
promap["Z"] = "Z";
promap["PH"] = "F";
promap["AU"] = "AW";
promap["KU"] = "KÜ";
function transme() {
if (document.theform.picker[0].checked) { // english to al bhed
builder = "";
toggler = 0;
for (var i = 0; i < document.theform.stimulus.value.length; i++) {
if (document.theform.stimulus.value.charAt(i) == "[") {
toggler = 1;
};
if (document.theform.stimulus.value.charAt(i) == "]") {
toggler = 0;
};
if (toggler == 1) {
builder = builder + document.theform.stimulus.value.charAt(i);
} else {
if (validator.indexOf(document.theform.stimulus.value.charAt(i)) == -1) {
builder = builder + document.theform.stimulus.value.charAt(i);
} else {
builder = builder + eamap[document.theform.stimulus.value.charAt(i)];
};
};
};
builder2 = "";
toggler = 0;
prev = 0;
for (var i = 0; i < document.theform.stimulus.value.length; i++) {
if (document.theform.stimulus.value.charAt(i) == "[") {
toggler = 1;
};
if (document.theform.stimulus.value.charAt(i) == "]") {
toggler = 0;
};
if (toggler == 1) {
builder2 = builder2 + document.theform.stimulus.value.charAt(i);
} else {
if (validator.indexOf(document.theform.stimulus.value.charAt(i)) == -1) {
builder2 = builder2 + document.theform.stimulus.value.charAt(i);
prev = 0;
} else {
temp = promap[eamap[document.theform.stimulus.value.charAt(i)]];
if (prev == 1) {
if ((vowels.indexOf(temp.charAt(0)) == -1) && (temp.length != 1)) {
builder2 = builder2 + "-";
};
};
builder2 = builder2 + temp;
prev = 1;
};
};
};
document.theform.response.value = builder + "\n\nPronounced: \"" + builder2 + "\"";
} else { //al bhed to english
builder = "";
toggler = 0;
for (var i = 0; i < document.theform.stimulus.value.length; i++) {
if (document.theform.stimulus.value.charAt(i) == "[") {
toggler = 1;
};
if (document.theform.stimulus.value.charAt(i) == "]") {
toggler = 0;
};
if (toggler == 1) {
builder = builder + document.theform.stimulus.value.charAt(i);
} else {
if (validator.indexOf(document.theform.stimulus.value.charAt(i)) == -1) {
builder = builder + document.theform.stimulus.value.charAt(i);
} else {
builder = builder + aemap[document.theform.stimulus.value.charAt(i)];
};
};
};
document.theform.response.value = builder;
};
return false;
};
</script>
</head>
<body>
<form method="get" name="theform" action="" onSubmit="return transme()">
<p><b><h2>English to Custom Language Translator (With Phonetics)</h2></b>
<p><b>Translate Text:</b>
<br> <u>(Excluded text should be within brackets).</u>
<br>
<textarea name="stimulus" cols="60" rows="6" wrap="VIRTUAL"></textarea>
</p>
<p><b>Translated Text:</b>
<br>
<textarea name="response" cols="60" rows="6" wrap="VIRTUAL"></textarea>
</p>
<p><b>Translation Options:</b>
<br>
<input name="picker" type="radio" value="0" checked>English to Custom Language (With Phonetics)
<br>
<input name="picker" type="radio" value="1">Custom Language to English (With Rough Phonetics)</p>
<p>
<input type="submit" value="Transl ate / Traunslausu!">
</p>
</form>
</body>
</html>
Я был бы признателен за помощь в исправлении кода для обеспечения полной функциональности.
1 ответ
Удалить onload
обертка (вверху слева на странице jsfiddle) и ваш код работает нормально.
С onload
обертка, ваша функция недоступна в глобальной области видимости, таким образом, ваш обработчик отправки onSubmit="return transme()"
приводит к ошибке "transme is notfined", и, поскольку функция никогда не вызывается, она никогда не достигает return false
что помешает отправке формы.