Tôi đang viết các bài kiểm tra với QUNIT và sử dụng $.ajax[]
để thực hiện HTML cho một số bài kiểm tra từ trang web Dev chạy trên địa phương của tôi:
add_elements = function[location, selector] {
$.ajax[location, {async: false}].done[function[data] {
stor.$els = $[selector, $.parseHTML[data]];
stor.$els.appendTo[$['body']];
}]
}
Sử dụng chức năng này tại một vị trí nhất định, tôi nhận được data
sau đây được chuyển cho cuộc gọi lại .done[]
của tôi:
Home
Home
Text
Text text text
More text!
Let's go
Mọi thứ hoạt động nếu selector
là #hero-units
hoặc .hero-unit
, nhưng $[selector, $.parseHTML[data]]
không trả lại gì nếu selector
là
Home
Home
Text
Text text text
More text!
Let's go
1! Và tôi muốn một đối tượng
Home
Home
Text
Text text text
More text!
Let's go
2 cho phần tử
Home
Home
Text
Text text text
More text!
Let's go
3.Và đây là những gì giết chết tôi:
4 không chứa phần tửHome
Home Text
Text text text
More text!
Let's go
3. Nó chỉ làHome
Home Text
Text text text
More text!
Let's go
6.does contain theHome
Home Text
Text text text
More text!
Let's go
3 element. It's justHome
Home Text
Text text text
More text!
Let's go
6.Home
Home Text
Text text text
More text!
Let's go- Tuy nhiên,
7 là một mảng trống.Home
Home Text
Text text text
More text!
Let's go
8 bao gồm tất cả cácHome
Home Text
Text text text
More text!
Let's go
9 bên trongHome
Home Text
Text text text
More text!
Let's go
3, nhưng không phảiHome
Home Text
Text text text
More text!
Let's go
3.Home
Home Text
Text text text
More text!
Let's go
Những gì đang xảy ra ở đây? Có vẻ như những gì đang xảy ra là
2 không nhìn vào bất kỳ yếu tố cấp cao nào được trả lại bởi
jQuery.parseHTML demo
str = "hello, my name is jQuery.",
html = $.parseHTML[ str ],
// Append the parsed HTML
// Gather the parsed HTML's node names
$.each[ html, function[ i, el ] {
nodeNames[ i ] = "
" + el.nodeName + "";
$log.append[ "
Node Names:
" ];
.append[ nodeNames.join[ "" ] ]
Home
Home
Text
Text text text
More text!
Let's go
4 hoặc 4, và chỉ là con cái của họ.
jQuery.parseHTML demo
str = "hello, my name is jQuery.",
html = $.parseHTML[ str ],
// Append the parsed HTML
// Gather the parsed HTML's node names
$.each[ html, function[ i, el ] {
nodeNames[ i ] = "
" + el.nodeName + "";
$log.append[ "
Node Names:
" ];
.append[ nodeNames.join[ "" ] ]
Làm thế nào tôi có thể nhận được một đối tượng
Home
Home
Text
Text text text
More text!
Let's go
2 cho
Home
Home
Text
Text text text
More text!
Let's go
3 từ
Home
Home
Text
Text text text
More text!
Let's go
4 này?CÂU TRẢ LỜI
Tra cứu kiểu ____ 9 sử dụng
9. Vì tôi đang tìm kiếm một yếu tố cấp cao nhất trong đối tượng jQuery này, tôi nên sử dụng
jQuery.parseHTML demo
str = "hello, my name is jQuery.",
html = $.parseHTML[ str ],
// Append the parsed HTML
// Gather the parsed HTML's node names
$.each[ html, function[ i, el ] {
nodeNames[ i ] = "
" + el.nodeName + "";
$log.append[ "
Node Names:
" ];
.append[ nodeNames.join[ "" ] ]
$.ajax[]
0 thay thế. Voila. Mô tả: Phân tích một chuỗi vào một mảng các nút dom.Parses a string into an array of DOM nodes. dữ liệu Chuỗi HTML được phân tích cú pháp Bối cảnh [mặc định: Phần tử tài liệu để phục vụ như là bối cảnh trong đó đoạn HTML sẽ được tạo Keepscripts [mặc định: Một boolean cho biết có bao gồm các tập lệnh được truyền trong chuỗi HTML Theo mặc định, Theo 3.0, hành vi mặc định được thay đổi. Nếu Hầu hết các API jQuery chấp nhận chuỗi HTML sẽ chạy các tập lệnh được bao gồm trong HTML. Tạo một mảng các nút DOM bằng chuỗi HTML và chèn nó vào DIV.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 jQuery.parsehtml [data [, bối cảnh] [, keepscripts]] return: mảngReturns: Array
Phiên bản được thêm vào: 1.8JQuery.parsehtml [data [, bối cảnh] [, Keepscripts]]jQuery.parseHTML[ data [, context ] [, keepScripts ] ]
$.ajax[]
1] [default: $.ajax[]
1]$.ajax[]
2] [default: $.ajax[]
2]$.ajax[]
3 sử dụng các phương thức gốc để chuyển đổi chuỗi thành một tập hợp các nút DOM, sau đó có thể được chèn vào tài liệu. Các phương pháp này làm cho tất cả các văn bản theo dõi hoặc hàng đầu [ngay cả khi đó chỉ là khoảng trắng]. Để ngăn chặn khoảng trắng kéo dài/hàng đầu không được chuyển đổi thành các nút văn bản, bạn có thể chuyển chuỗi HTML qua $.ajax[]
4.$.ajax[]
5 là $.ajax[]
1 hiện tại nếu không được chỉ định hoặc được đưa ra là $.ajax[]
7 hoặc $.ajax[]
8. Nếu HTML được sử dụng trong một tài liệu khác như iframe, tài liệu của khung đó có thể được sử dụng.$.ajax[]
5 không được chỉ định hoặc được đưa ra là $.ajax[]
7 hoặc $.ajax[]
8, một $.ajax[]
1 mới được sử dụng. Điều này có khả năng cải thiện bảo mật vì các sự kiện nội tuyến sẽ không thực hiện khi HTML được phân tích cú pháp. Khi HTML được phân tích cú pháp được đưa vào một tài liệu, nó sẽ thực thi, nhưng điều này mang lại cho các công cụ cơ hội để vượt qua DOM đã tạo và loại bỏ bất cứ thứ gì được coi là không an toàn. Sự cải thiện này không áp dụng cho việc sử dụng nội bộ của $.ajax[]
3 vì chúng thường vượt qua trong $.ajax[]
1 hiện tại. Do đó, một tuyên bố như data
5 vẫn phải chịu sự tiêm của mã độc.Cân nhắc về Bảo mật
$.ajax[]
3 không chạy các tập lệnh trong HTML được phân tích cú pháp trừ khi data
7 rõ ràng là data
8.Tuy nhiên, trong hầu hết các môi trường vẫn có thể thực hiện các tập lệnh một cách gián tiếp, ví dụ thông qua thuộc tính data
9.Người gọi nên nhận thức được điều này và bảo vệ chống lại nó bằng cách làm sạch hoặc thoát khỏi bất kỳ đầu vào không đáng tin cậy nào từ các nguồn như URL hoặc cookie.Đối với khả năng tương thích trong tương lai, người gọi không nên phụ thuộc vào khả năng chạy bất kỳ nội dung tập lệnh nào khi data
7 không xác định hoặc $.ajax[]
2.Example:
jQuery.parseHTML demo
str = "hello, my name is jQuery.",
html = $.parseHTML[ str ],
// Append the parsed HTML
// Gather the parsed HTML's node names
$.each[ html, function[ i, el ] {
nodeNames[ i ] = "
$log.append[ "
Node Names:
" ]; .append[ nodeNames.join[ "" ] ]
Demo: