2013-10-24 2 views
0

DevTools의 코드 리더에서 선택된 텍스트를 가져 오려고합니다. onSelectionChanged 핸들러에서 selectionInfo를 얻을 수 있지만 텍스트를 가져 오는 방법을 모른다.DevTools 코드 편집기에서 선택한 텍스트를 가져 오는 방법은 무엇입니까?

또한 onSelectionChanged가 실행되기 전에 selectionInfo (현재 선택)를 얻는 방법은 무엇입니까?

chrome.devtools.panels.sources.createSidebarPane(
    "title", 
    function(sidebar) { 
     function update(selectionInfo) { 
      //alert([selectionInfo.url, selectionInfo.startLine, selectionInfo.endLine, selectionInfo.startColumn, selectionInfo.endColumn]); 
      sidebar.setObject(JSON.parse(JSON.stringify(selectionInfo))); 
      // How to extract text using data from selectionInfo ??? 
     } 

     update(/*selectionInfo should be there*/); 
     chrome.devtools.panels.sources.onSelectionChanged.addListener(update); 
    } 
); 

답변

1

chrome.devtools.panels.elements.onSelectionChanged.addListener의 콜백이 어떤 주장을지지 않습니다는 API documentation을은 cf. 즉 selectionInfo은 항상 정의되지 않습니다.

선택한 요소를 가져 오려면 $0 변수를 사용할 수 있습니다. 코드는 그러므로 다음과 같을 것이다 :

chrome.devtools.panels.elements.createSidebarPane(
    "title", 
    function(sidebar) { 
     function update() { 
      sidebar.setExpression("$0"); 
     } 

     update(); 
     chrome.devtools.panels.elements.onSelectionChanged.addListener(update); 
    } 
); 

참고 : 나는 chrome.devtools.panels.elements에 의해, 존재하지 않는, chrome.devtools.panels.sources을 교체했다.

+0

chrome.devtools.panels.sources가 존재하며 코드 작성자가 변경하는 선택 항목의 청취자를 첨부 할 수 있습니다. (아마 당신은 오래된 브라우저를 사용하는 ... 내가 크롬 32.0.1671.3을 사용하고 있습니다?) selectionInfo 또한 정의와 5 개 속성이 포함됩니다 : selectionInfo.url, selectionInfo.startLine, selectionInfo.endLine, selectionInfo을 .startColumn, selectionInfo.endColumn. 그러나 selectionInfo.selectedText는 실제로 누락되었습니다 ... – user2916617

+0

Chrome 30.0.1599.101 (안정된 채널)을 사용하고있어서 실제로 그 중 하나를 놓쳤습니다. Chromium 소스 코드를 보면 selectionInfo에 selectionText 특성이있는 것처럼 보이지 않습니다 (cf https://chromiumcodereview.appspot.com/23904024). –

관련 문제