Курсор в тексте. Следующий абзац, предыдущий абзац. JavaScript
Этот программный код демонстрирует как как получить ссылку на предыдущий или на следующий абзац, когда курсор находится в тексте. Как показал опыт, такая задача иногда вводит в тупик начинающих и даже более опытных разработчиков, поэтому здесь приводим одно из возможных решений. Поделитесь, как эту задачу решаете вы.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | main(); /*Предполагается что перед запуском скрипта курсор стоит в тексте. Скрипт покажет текущий абзац, следующий абзац и предыдущий абзац*/ function main() { if(app.selection[0].constructor.name == "InsertionPoint") { var mySelect = app.selection[0]; var myStory = mySelect.parentStory; var myParagraphs = myStory.paragraphs; var myPara = mySelect.insertionPoints[0].paragraphs[0]; // Ссылка на текущий абзац alert(myPara.contents, "Текущий абзац" ); try { var nextPara = myParagraphs.nextItem(myPara); alert(nextPara.contents, "Следующий абзац") } catch (_) { alert("Переход к следующему абзацу невозможен, так как это последний абзац", "Неудача точка ру") } // catch try { var prevPara = myParagraphs.previousItem(myPara); alert(prevPara.contents, "Предыдущий абзац") } // try catch(_) { alert("Переход к предыдущему абзацу невозможен, так как это первый абзац", "Неудача точка ру") } // catch } // if } // main() |
Harbs из фирмы In-Tools предлагает для предыдущего абзаца следующее решение:
1 2 3 4 | function getPreviousPara(text){ return text.parent.characters.item(text.paragraphs[0].index-1).paragraphs[0]; } alert(getPreviousPara(app.selection[0]).contents); |
Последние комментарии