HTML được thực thi như thế nào trong trình duyệt?
Như bạn có thể biết, thẻ script được sử dụng để chỉ định JavaScript sẽ được chạy trong trang web. Thẻ tập lệnh có thể bao gồm trực tiếp JavaScript hoặc có thể trỏ đến URL nơi tập lệnh sẽ được tải từ đó Show
Các thẻ tập lệnh được thực thi theo thứ tự chúng xuất hiệnÝ tưởng này phải trực quan khi bạn đọc mã này
Nó ít trực quan hơn (nhưng không kém phần đúng) khi làm việc với các tài nguyên bên ngoài
Nó hoạt động tương tự đối với sự kết hợp của các tập lệnh cục bộ và từ xa Về mặt chức năng, điều này có nghĩa là bạn có thể làm chậm đáng kể trang web của mình nếu bạn tải tập lệnh chậm ngay từ đầu trang. Điều đó cũng có nghĩa là các tập lệnh xuất hiện sau trên trang có thể phụ thuộc vào những thứ mà các tập lệnh xuất hiện trước đó đã thực hiện Các phần tử trên trang sẽ không hiển thị cho đến khi tất cả các thẻ tập lệnh trước chúng được tải và thực thi. Điều này có nghĩa là bạn có thể làm tất cả những điều điên rồ khi chỉnh sửa trang trước khi tải, nếu bạn sẵn sàng chấp nhận hiệu suất đạt được Tuy nhiên, điều này không áp dụng nếu bạn thêm các thẻ tập lệnh vào DOM sau khi trang đã bắt đầu tải bằng cách sử dụng 3 hoặc tương tự. Các thẻ đó sẽ tải bất cứ khi nào trình duyệt thấy phù hợp và không theo thứ tự cụ thể nàoKhi thẻ tập lệnh thực thi, mọi thứ phía trên nó trong DOM đều khả dụng (nhưng không phải mọi thứ bên dưới)
Bạn có thể coi trình phân tích cú pháp HTML giống như di chuyển qua thẻ tài liệu theo thẻ, thực thi bất kỳ mã JavaScript nào khi nó tiếp cận nó. Điều này có nghĩa là các nút DOM có sẵn cho JavaScript của bạn (thông qua 4, jQuery, v.v. ) chỉ khi thẻ mở của chúng xuất hiện sớm hơn trong tài liệu so với thẻ tập lệnh của bạnMột hệ quả hữu ích của điều này là 5 hầu như luôn có sẵn trong bất kỳ JavaScript nào bạn có thể viết (trên trang web). 6 chỉ khả dụng nếu thẻ tập lệnh của bạn xuất hiện bên trong hoặc sau thẻ mở đầu 78 và 9HTML5 đã thêm một số công cụ để kiểm soát thời điểm thực thi tập lệnh
Thuộc tính 8Trong lịch sử (kể từ Netscape 2), sẽ không có vấn đề gì nhiều nếu bạn chỉ định 9 trong thẻ tập lệnh của mình hoặc chỉ cần để trống. Tuy nhiên, nếu bạn đặt bất kỳ loại MIME nào không phải là biến thể của JavaScript thành 8, thì trình duyệt sẽ không thực thi nó. Điều này có thể thú vị khi bạn muốn xác định ngôn ngữ của riêng mình 1Việc thực thi mã đó thực sự tùy thuộc vào bạn, tôi. e 2Việc xác định hàm 11 được dành cho người đọc như một bài tậpNếu bạn có mong muốn ngược lại, bạn cũng có thể ghi đè 8 mặc định cho mọi thẻ tập lệnh trên trang bằng cách sử dụng thẻ 13 6Hoặc tiêu đề 14Hãy xem A Brief History of Weird Scripting Languages on the Web để biết thêm chi tiết về những gì 15 là hợp lệCó một thuộc tính 16?Thuộc tính 16 là một phần của thông số Tính toàn vẹn của nguồn tài nguyên con mới. Nó cho phép bạn cung cấp hàm băm cho nội dung mà tệp tập lệnh nên chứa. Nó có nghĩa là để ngăn chặn một diễn viên bất chính gây rối với nội dung của thẻ tập lệnh qua dây. Trong thế giới có SSL, điều này chỉ thực sự có giá trị nếu bạn đang tải tập lệnh từ một số nguồn bên ngoài mà bạn không kiểm soát, chẳng hạn như 18Nếu bạn chọn sử dụng cái này, bạn bao gồm hàm băm mà bạn đang sử dụng và giá trị của hàm băm, được phân tách bằng dấu gạch nối. Nó trông như thế này 2Tôi vẫn chưa nhìn thấy nó ngoài tự nhiên, nhưng nếu bạn biết trang web nào sử dụng nó, hãy bình luận bên dưới 19 cũng là một thứNó chưa được chuẩn hóa hoàn toàn, nhưng có một thuộc tính 19 được hỗ trợ bởi một số trình duyệt. Ý tưởng chung là trình duyệt không muốn cho phép bạn làm nhiều việc với các tài nguyên được tải từ một 'nguồn gốc' khác với trang hiện tại. (Nguồn gốc được định nghĩa là sự kết hợp của giao thức, tên máy chủ và cổng của trang. Tôi. e. 21)Điều này là để ngăn bạn, ví dụ, đưa ra yêu cầu đối với trang web của đối thủ cạnh tranh để hủy bất kỳ tài khoản nào mà người dùng hiện tại có thể có (không đẹp. ). Tuy nhiên, kết nối của nó với các thẻ tập lệnh hơi ngẫu nhiên. Ý tưởng là nếu bạn áp dụng một trình xử lý cho sự kiện 22, thì trình xử lý đó sẽ được cung cấp một số thông tin về trang và tập lệnh mà có lẽ bạn không nên có nếu đang tải mã từ một trang web bên ngoài. Trong các trình duyệt an toàn, thông tin này không được đưa vào trừ khi bạn chỉ định 19Tuy nhiên, 19 không phải là một bản hack bảo mật kỳ diệu, những gì nó làm là hướng dẫn trình duyệt trải qua quá trình kiểm tra quyền truy cập CORS thông thường để thực hiện một yêu cầu 25 và kiểm tra các tiêu đề 2627Nó không hỗ trợ IE, khiến nó trở thành một thứ gì đó mới lạ, nhưng có một thuộc tính gọi là 27 trỏ đến tập lệnh hiện tại đang được thực thi. Nó có thể cực kỳ hữu ích nếu bạn muốn rút các thuộc tính ra khỏi thẻ tập lệnh mà phần nhúng của bạn được bao gồm bằng cách sử dụng. Cá nhân tôi rất vui vì nó không được hỗ trợ đầy đủ vì nó sẽ khiến một số công việc chúng tôi làm tại Háo hức cài đặt mã nhúng khó hơn một chút29?Điều này cực kỳ vô dụng vì nó chỉ được hỗ trợ trên Firefox. Nó cùng với 60 cho phép bạn liên kết một sự kiện sẽ được thực thi trước và sau khi mỗi tập lệnh trên trang chạy, điều này khá thú vịNếu bạn tò mò, các đối tượng sự kiện bao gồm tham chiếu đến tập lệnh đang được thực thi và sự kiện 61 có thể hủy thực thi bằng cách gọi 6263 / 64Cho đến ngày nay, thông số kỹ thuật HTML5 bao gồm một phương pháp liên kết mã hiếm thấy, trước đây dành riêng cho IE, với một sự kiện. Bạn được cho là có thể thực hiện việc này để thẻ tập lệnh không chạy cho đến khi xảy ra sự kiện tải trang 9Tôi thực sự không thể làm cho tính năng này hoạt động trên Chrome hoặc Firefox (làm cho chúng không tuân thủ các tiêu chuẩn), nhưng rất có thể nó vẫn hoạt động trong IE 65Giống như cha mẹ của bạn, thật khó tin rằng đã có lúc JavaScript còn non trẻ. Tuy nhiên, sẽ có một ngày bạn không thể chắc chắn liệu một trình duyệt nhất định có hỗ trợ JavaScript hay không. Tệ hơn nữa, bạn không thể chắc chắn rằng trình duyệt thậm chí sẽ biết thẻ 66 là gì. Và nếu một trình duyệt không nhận ra thẻ, thì nó phải hiển thị thẻ đó dưới dạng phần tử nội tuyến chung, nghĩa là tất cả JavaScript bí mật của bạn sẽ được hiển thị cho trang dưới dạng văn bảnMay mắn thay, thông số kỹ thuật đủ hữu ích để cung cấp giải pháp, gói mã của bạn vào thứ gì đó mà trình duyệt không hỗ trợ sẽ hiểu là nhận xét HTML 2Tất nhiên, giống như hầu hết mọi thứ, XHTML làm cho điều này tồi tệ hơn nhiều. XML có một phương pháp thoát nội dung rất đặc biệt có thể chứa các thẻ đóng và như vậy, 67 đã ra đời 4Cùng với đó, mã của bạn sẽ là XHTML hợp lệ. Điều này sẽ không có bất kỳ tác động nào đến chức năng của nó, nhưng cực kỳ quan trọng đối với giá trị bản thân của bạn với tư cách là nhà phát triển web Các trình duyệt cũng bao gồm một phương pháp hữu ích để cho phép bạn yêu cầu những người không bật JavaScript biến đi, đó là thẻ 68. 69 bọc nội dung chỉ được hiển thị nếu trình duyệt không hỗ trợ thực thi tập lệnh 0Nếu tinh ý, bạn sẽ nhận ra rằng 68 không chấp nhận đối số 8, khiến cho sự tương tác của nó với các trang sử dụng nhiều tập lệnh 15 hơi mơ hồ. Hành vi thực tế thay đổi từ trình duyệt này sang trình duyệt khác, nhưng bao gồm việc hiển thị các khối 68 nếu bất kỳ thẻ 66 nào được sử dụng trước đó trong tài liệu sử dụng một 8 không được hỗ trợ. Điều này có nghĩa là rất có thể có những 68 đầu tiên không xuất hiện, trong khi những cái thấp hơn trên trang thì có.Thẻ tập lệnh và 27Các thẻ tập lệnh được thêm động vào trang thông qua DOM được trình duyệt thực thi 1Các thẻ tập lệnh được thêm động vào trang thông qua 27 không 2Tại sao điều này không rõ ràng, nhưng đó là một câu trả lời thú vị cho câu hỏi nhỏ "có thể có thẻ tập lệnh hiển thị trong trình kiểm tra Chrome chưa thực sự chạy không?" Cảm ơn bạn đã theo dõi. Bài đăng tiếp theo của chúng tôi là trên 29 và nó thật kỳ lạ. Đăng ký bên dưới để nhận thông báo khi bài đăng blog mới của chúng tôi được phát hành
Làm thế nào mã HTML được thực thi trong trình duyệt?Trình duyệt phân tích cú pháp html (DOM) và nhận các tài nguyên bên ngoài trong một cấu trúc giống như mảng hoặc ngăn xếp. Sau khi html được tải, trình duyệt bắt đầu tải song song các tài nguyên bên ngoài trong cấu trúc và thực thi cho đến khi tất cả các tài nguyên được tải xong .
Tại sao HTML chạy trong trình duyệt?A. HTML cho trình duyệt của bạn biết về cấu trúc tài liệu của bạn . đâu là tiêu đề, đâu là đoạn văn, văn bản nào cần nhấn mạnh, v.v. Với thông tin này, các trình duyệt có các quy tắc mặc định tích hợp về cách hiển thị từng thành phần này.
Nó được thực thi ở đâu khi trình duyệt hiển thị HTML?Khi trình duyệt đọc mã HTML, bất cứ khi nào nó gặp một phần tử HTML như html , body , div v.v. , nó tạo một đối tượng JavaScript được gọi là Nút . Cuối cùng, tất cả các phần tử HTML sẽ được chuyển đổi thành các đối tượng JavaScript.
Cái gì thực thi mã HTML?Trình chạy HTML . Biên dịch, chạy và thực thi mã HTML trực tuyến. |