2016-07-28 2 views
0

this answer (두 번째 옵션)의 코드를 사용하여 복사 대상에 텍스트를 추가 할 수있었습니다. 그러나 문자열 연결을 변경하고 replace에 대한 호출을 추가하면 "replace is a function"오류가 발생합니다.Javascript/jQuery를 사용하여 클립 보드로 보내기 전에 복사되는 텍스트를 검색/바꾸는 방법은 무엇입니까?

copytext = window.getSelection().replace(/some pattern/, 'replace value'); // Fails 

"선택"개체는 매우 복잡해 보이며 그 안에 텍스트도 찾을 수 없습니다. 내가 toString라고 부를 수는 있지만 contenteditable div에서 HTML을 복사하고 서식을 보존해야하기 때문에 옵션이 아닙니다.

div의 내용에 상대 링크가 있고 복사 된 텍스트의 절대 링크로 변환 되었기 때문에이 작업을 수행하려고합니다. 이것은 rawgit에서 my demo에 액세스 할 때만 발생합니다. 로컬에서는 정상적으로 작동합니다.

내가 어떻게이 작업을 수행 할 수 있는지에 대한 아이디어가 있습니까? https://jsfiddle.net/8kx8v8pb/

+1

은'+'연산자는 단지 객체를 문자열로 강제 변환을 도움이되기를 바랍니다. 명시 적으로'.toString()'을 호출 (또는'+ ""')하여 – blgt

+0

'두 번째 옵션'- 그래서 IE에만 ​​관심이 있으십니까? –

+0

http://stackoverflow.com/questions/4176923/html-of-selected-text/4177234#4177234 선택 개체에서 html을 가져 오는 방법을 보여줍니다. – jHilscher

답변

0

당신은 문자열로 캐스팅 할 필요가 (getSelection()은 선택 객체를 반환) :

UPDATE

여기에 내 현재 설정과 jsfiddle입니다. 그래서 중 하나 ""를 추가하거나 경우에 따라서 .replace()

을 실행하기 전에 .toString()와 문자열로 캐스팅 코드는 다음과 같이해야합니다 :

copytext = (window.getSelection() + "").replace(/some pattern/, 'replace value'); 

또는

copytext = (window.getSelection().toString()).replace(/some pattern/, 'replace value'); 

출처 : https://developer.mozilla.org/en-US/docs/Web/API/Window/getSelection

+0

이 문제는 복사중인 콘텐츠의 모든 서식이 느슨합니다. 더 명시 적으로 말하면, 링크를 포함하여 그 안에 풍부한 텍스트가있는 contenteditable div가 있습니다. 'toString'을 사용하면 모든 것을 느슨하게 처리 할 수 ​​있습니다. – Ariel

0

선택은 개체이므로 텍스트에서 바꾸기 기능을 실행하려면 fo 느린.

window.getSelection().anchorNode.data.replace(/some pattern/, 'replace value'); 

나는이

+0

이 작업은 선택 항목의 첫 번째 요소에만 적용됩니다. 내 선택에 여러 개의 노드가 있습니다. 루프를 반복하여 각 노드에 'replace'를 적용 할 수 있습니까? 내가 자바 스크립트 선택 구조에 익숙하지 않다고 말했듯이, 노드를 루핑하는 것만 큼 힘든 일을하려고하는데 도움이 필요하다. – Ariel

+0

전체 코드를 여기에 게시 할 수 있습니까? 이것을 위해 jsfiddle를 만들 수 있다면 좋을 것입니다. – localhost