2014-10-08 2 views
0

잠시 동안 인터넷 검색을 시도했지만 정말 간단하지만 문제를 해결할 수는 없습니다. 나는 당신이 어떤 텍스트를 선택할 때, 당신이 마우스 오른쪽 버튼을 클릭하고 선택에 어떤 수학을 수행 할 수있는 버튼이있는 크롬 확장을 가지고있다. 그러나 어떤 이유로 든 경고 창에 선택 항목을 표시 할 수 없습니다.자바 스크립트에서 사용자가 선택한 텍스트 바꾸기

if (window.getSelection) 
{ 
    window.alert("Does it enter if window.getselection"); 
    sel=window.getSelection(); 
    window.alert(sel); 
} 

그래서 if 문을 입력하면 첫 번째 경고가 표시되고 두 번째 경고는 비어 있습니다. 이것을 해결하려고 노력하면서 내 마음을 잃어 버리면 내가 놓친 너무 단순한 것처럼 느껴진다. 또한 선택한 텍스트를 대체하는 가장 좋은 방법은 무엇입니까? 감사.

EDIT : 내 매니페스트 파일을보고 싶었습니다.

{ 
"name": "Convert", 
"description": "lorem", 
"version": "0.6", 
"permissions": ["contextMenus", "tabs", "windows"], 
"background": { 
"scripts": ["conversion.js"] 
}, 
"manifest_version": 2 
} 

나는 여기에 뭔가 잘못했음을 추측합니다. Chrome Extnesions에 관해서는 나는 쉰다.

+0

귀하의 문제는 당신이 이것을 호출 한 컨텍스트와 관련이 있습니다. 더 많은 코드를 보여줄 수 있습니까? – Xan

+0

@ 잰 문제 없습니다. 그냥 올려주세요. –

답변

-1

괄호를 잊어 버렸습니다. 기능 getSelection이 존재하기 때문에, window.getSelection에 관계없이 어떤 window.getSelection() 반환의 사실이다

if (window.getSelection()) 
{ 
    window.alert("Does it enter if window.getselection"); 
    sel=window.getSelection(); 
    window.alert(sel); 
} 

보십시오.

+0

그 차이는 없었습니다. –

+0

-1 : 응답이 없으므로 'window.getSelection()'은 아무것도 선택하지 않아도 객체를 반환하므로 ans가 true가됩니다. – Xan

+0

@Xan 그럼'window.getSelection()'과'window.getSelection'은 항상 둘 다 true를 반환합니다. 그렇습니까? 고마워, 고마워. – cmousset

2

당신은 Chrome 확장 프로그램의 초보자입니다. 그러므로 Architecture Overview을 살펴보십시오.

당신이 그것을 읽으면

, 당신은 배경 코드는 별도의 페이지에서 실행 계몽 다시 올 것이다, 그리고 window는 참조하고 되지 현재 열려있는 눈에 보이는 탭. 이에 액세스하려면 일반적으로 어떤 형태의 Content Script이 필요합니다.

콘텐츠 스크립트을 구현하기 전에 context menu API을 다시 한 번 살펴 보겠습니다.

handler of a context menu click eventselectionText이 포함 된 info 객체를 수신합니다.이 객체는 컨텍스트 메뉴의 호출 순간에 선택됩니다. 즉, 당신이 원하는 모든 (그리고 전체 Selection 객체) 인 경우, 당신은 모든 페이지와 상호 작용 할 필요가 없습니다 : 당신이 전체 선택 객체를해야하는 경우

function handleContext(info){ 
    if(info.selectionText) { 
    // There was something selected, do stuff with it 
    } 
} 

는, 여기에 대한 최소한의 코드입니다 (activeTab 권한이 필요) :

function handleContext(info, tab){ 
    if(tab){ 
    chrome.tabs.executeScript(
     tab.id, 
     {code : "window.getSelection();"}, 
     function(results) { 
     // Do something with results[0] 
     } 
    ); 
    } 
} 

는 참조 용으로 Programmatic InjectionexecuteScript docs를 참조하십시오.

관련 문제