dbarthel
Lounge-Member
Habe nochlam eine Frage.
Da der Text, den Minis Funktion aus diesem Thread: http://forum.jswelt.de/javascript/60110-pdf-vorlesen-lassen.html#post387368 liefert, zu lang für die weitere Verarbeitung ist, habe ich den Code wie folgt geändert, um den Text weiter aufzusplitten:
allerdings scheint da ein Fehler drin zu sein, denn als Ergebnis wird jetzt der erste Durchlauf von currentSentence nicht ausgegeben, sondern erst mit dem zweiten begonnen.
Könnte sich bitte jemand mal den Code ansehen und mir sagen wo das Problem liegt, bzw. den Code zum funktionieren bringen!?
Da der Text, den Minis Funktion aus diesem Thread: http://forum.jswelt.de/javascript/60110-pdf-vorlesen-lassen.html#post387368 liefert, zu lang für die weitere Verarbeitung ist, habe ich den Code wie folgt geändert, um den Text weiter aufzusplitten:
Code:
// play
$("#demo_play").click(function () {
var currentSentence = '', sentenceParts = '', currentPart = '',
sentences = $("#output").text().replace(/([.?!]+ )/g, "$1\n").split(/\s*[\n\r]+\s*/); // splits the txt into sentences
function playSentence () {
if (sentences.length) {
currentSentence = sentences.shift().trim(); // gets the currentSentence for each time the playSentence-function is called
if (currentSentence.length) {
// playing currentSentence would start here normally, but we need to check if currentSentence is too big
alert(currentSentence);
if (currentSentence.length >= 100) {
//new splitting necesarry
sentenceParts = currentSentence.split(/\,/mg); //splits the currentSentence into parts
function playSplitSentence () {
if (sentenceParts.length) {
currentPart = sentences.shift().trim(); // gets the currentPart for each time the playSplitSentence-function is called
if (currentPart.length) {
// playing currentPart will start here
alert(currentPart);
window.setTimeout(playSplitSentence, 1000);
// currentPart have been played so recall the function to play next Part
} else {
playSplitSentence();
}
// all Parts have been played
}
else {
console.log('finished playing parts of currentSentece, should continue next sentence');
//playSentence();
// get next Sentence
}
}
// call the playSplitSentence-function to start playing all parts of currentSentence
playSplitSentence();
// ended new splitting continuing normal playing
} else {
//play currentSentence
alert(currentSentence);
window.setTimeout(playSentence, 3000);
}
// currentSentence have been played so recall the function to play next Sentece
} else {
playSentence();
}
// all Sentences have been played
} else {
console.log('Finished playing text');
}
}
// call the playSentence-function to start playing all sentences of txt
playSentence();
});
allerdings scheint da ein Fehler drin zu sein, denn als Ergebnis wird jetzt der erste Durchlauf von currentSentence nicht ausgegeben, sondern erst mit dem zweiten begonnen.
Könnte sich bitte jemand mal den Code ansehen und mir sagen wo das Problem liegt, bzw. den Code zum funktionieren bringen!?
Zuletzt bearbeitet: