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

hoạt động như mong đợi từ lời nhắc lệnh công cụ nhà phát triển. Nhưng, khi trong tập lệnh nội dung của tiện ích mở rộng, tôi nhận được '$x is not defined'.

Tại sao tính năng này không có sẵn trong tập lệnh nội dung hoặc có cách truy cập đặc biệt nào bên trong tiện ích mở rộng nội dung tập lệnh/Chrome không?

Tôi đang sử dụng Chrome 22 trên Debian.

+0

Gợi ý: Nhập 'trình gỡ lỗi'; trong bảng điều khiển. –

+0

Bit bối rối như những gì thêm thông tin mà tiết lộ cho tôi? – rutherford

+0

Chỉ cần thử nó. Bạn sẽ thấy http://i.stack.imgur.com/AXRPG.png –

Trả lời

7

$x() không phải là một phần của môi trường thời gian chạy của trang web hoặc tập lệnh nội dung. Nó là một công cụ là một phần của the Command Line API for Chrome's DevTools.

Để sử dụng XPath trong tập lệnh nội dung, bạn cần thực hiện theo cách thông thường, phím tắt tiện lợi của DevTools không khả dụng.

Mã của bạn sẽ trông như thế này:

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

- đó là loại điều mà $x() đang làm gì cho bạn, đằng sau hậu trường.


Khi bạn ở đó, hãy xem xét chuyển sang CSS selectors. Sau đó, chức năng tương tự là:

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

- có nhiều điều thú vị hơn trong sách của tôi.

Các vấn đề liên quan