7
$x("//a[contains(@href,'.jpg')]"); 

은 개발자 도구 명령 프롬프트에서 예상대로 작동합니다. 그러나 확장 프로그램의 콘텐츠 스크립트에서 '$x is not defined'이 표시됩니다.

콘텐츠 스크립트에서 사용할 수 없거나 콘텐츠 스크립트/Chrome 확장 프로그램 내에서 특수 스크립트에 액세스 할 수있는 특별한 이유가 있습니까?

데비안에서 Chrome 22를 사용하고 있습니다.

+0

힌트 : 콘솔에'debugger;를 입력하십시오. –

+0

나에게 알려주는 추가 정보는 무엇입니까? – rutherford

+0

그냥 사용해보십시오. http://i.stack.imgur.com/AXRPG.png –

답변

7

$x()은 웹 페이지 또는 콘텐츠 스크립트의 런타임 환경에 속하지 않습니다. the Command Line API for Chrome's DevTools의 일부인 도구입니다.

콘텐츠 스크립트에서 XPath를 사용하려면 정상적인 방법으로 수행해야합니다. DevTools 편리한 바로 가기를 사용할 수 없습니다.

코드는 다음과 같습니다

var jpgLinks = document.evaluate (
    "//a[contains(@href,'.jpg')]", 
    document, 
    null, 
    XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, 
    null 
); 
var numLinks = jpgLinks.snapshotLength; 

for (var J = 0; J < numLinks; ++J) { 
    var thisLink = jpgLinks.snapshotItem (J); 
    console.log ("Link ", J, " = ", thisLink); 
} 

-$x()가 무대 뒤에서 당신을 위해 수행하고 있었던 물건의 종류이다. 당신이 그것에있는 동안


, CSS selectors로 전환하는 것이 좋습니다. 그런 다음 동일한 기능은 다음과 같습니다

var jpgLinks = document.querySelectorAll ("a[href$='.jpg']"); 
var numLinks = jpgLinks.length; 

for (var J = 0; J < numLinks; ++J) { 
    var thisLink = jpgLinks[J]; 
    console.log ("Link ", J, " = ", thisLink); 
} 

- 훨씬 더 맛이 내 책에있다.