2012-04-28 2 views
3

자바 스크립트를 사용하여 단어가 강조 표시된 완전한 문장을 생성하려고합니다.자바 스크립트는 선택된 단어의 앞뒤에있는 단어를 검색합니다.

window.getSelection 

나에게 강조 표시된 단어를 보내주십시오. 나는 javascript 범위의 예제를 찾고 있지만 구두점이 발견 될 때까지 선택 사항을 거꾸로 움직여 반복하는 방법을 완전히 이해하지 못하고 구두점이 발견 될 때까지 전달합니다.

예 :

소셜 미디어 신경증 함께 내포 관계를 갖는다. Obsessive 사람들은 과 Twitter와 같은 사이트에 필수적입니다. 그들은 에너지와 윙윙 거리기를 추가합니다. 그들의 정체성은 아바타와 연결되어 있으며 그 자체로 사이트가 중요해진 것처럼 보입니다. 그들은 의 내용을 많이 제공합니다. 지난 가을에 발표 된 연구에 따르면 Twitter에서 2 만 2000 명의 사용자가 읽고있는 내용의 절반을 제공한다고합니다. 그러나 강박 관념은 위험합니다. 그들은 사이트를 오싹하게 만들 수 있습니다.

위의 "Facebook"이라는 단어를 선택한 경우 최종 문자열은 "강박적인 사람들은 Facebook 및 Twitter와 같은 사이트에 필수적"이어야합니다.


업데이트 1 :

코드 작품 아래에 언급하지만, html 태그가있는 경우 중지합니다.

예 : 상무부의 보고서에 파고 경우

, 당신은 약간 더 실망 번호를 찾을 수 있습니다. 재고 생산을 따로 설정하면 기업이 — 나중에 판매 할 때 예상 경제 성장률이 1.6 % 증가한 상품입니다. 회복 시점에 급증 할 것으로 예상되는 자본 투자는 거의 증가하지 않았습니다. 그리고 개인 가처분 소득 — 사람들이 세금을 지불 한 후 지출해야하는 금액 — 을 0.4 % 확장했습니다. "찾기"를 선택하여

위, 출력 문장 대신 "당신이 상무부의 보고서에 탐구하는 경우, 당신은 몇 가지 더 실망 번호를 찾을 수 있습니다"

을 "당신은 몇 가지 더 실망 번호를 찾을 수 있습니다"입니다

전후에 태그를 제거하는 방법은 무엇입니까?

답변

2

window.getSelectionSelection 개체를 반환하며이 개체에서 Range을 얻을 수 있으며 시작 및 끝 오프셋을 제공합니다. 나머지는 분명한 것입니다 :

rng = window.getSelection().getRangeAt(0) 
start = rng.startOffset 
end = rng.endOffset 
text = rng.startContainer.nodeValue 

before = text.substr(0, start) 
sel = text.substr(start, end - start) 
after = text.substr(end) 

sentence = before.match(/[^.!?]*$/)[0] + sel + after.match(/^[^.!?]*/)[0] 

이것은 FF 및 Chrome, IIRC에서 작동하며 MSIE에서는 다르게 보입니다. 자세한 내용은 http://msdn.microsoft.com/en-us/library/ie/ms535869%28v=vs.85%29.aspx을 참조하십시오.

+0

감사합니다! 테스트하고 매력처럼 일했습니다! – BlockReader

+0

내 질문에 업데이 트를 좀 봐 주시겠습니까? – BlockReader