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

डेवलपर टूल कमांड प्रॉम्प्ट से अपेक्षित कार्य करता है। लेकिन, जब किसी एक्सटेंशन की सामग्री-स्क्रिप्ट में मुझे '$x is not defined' मिलता है।

यह सामग्री-स्क्रिप्ट में क्यों उपलब्ध नहीं है या क्या सामग्री-स्क्रिप्ट/क्रोम एक्सटेंशन के अंदर इसे एक्सेस करने का एक विशेष तरीका है?

मैं डेबियन पर क्रोम 22 का उपयोग कर रहा हूं।

+0

संकेत: कंसोल में 'डीबगर;' टाइप करें। –

+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); 
} 

- जो मेरी पुस्तक में अधिक आकर्षक है।

संबंधित मुद्दे

 संबंधित मुद्दे