Tại sao tệp JS không hoạt động trong HTML?
Đặt tập lệnh ở dưới cùng của phần tử sẽ cải thiện tốc độ hiển thị, vì việc giải thích tập lệnh làm chậm màn hình Show
JavaScript bên ngoàiTập lệnh cũng có thể được đặt trong các tệp bên ngoài tệp bên ngoài. myScript. jshàm myFunction() { Tập lệnh bên ngoài là thực tế khi cùng một mã được sử dụng trong nhiều trang web khác nhau Các tệp JavaScript có phần mở rộng tệp. js Để sử dụng một tập lệnh bên ngoài, hãy đặt tên của tệp tập lệnh trong thuộc tính (nguồn) Để bao gồm tệp JavaScript bên ngoài, chúng ta có thể sử dụng thẻ script có thuộc tính
Thẻ tập lệnh này phải được bao gồm giữa các thẻ trong tài liệu HTML của bạn Tệp JavaScriptTệp JavaScript không phải là tệp HTML hoặc tệp CSS
Theo thông lệ, đặt tất cả các tệp JavaScript vào một thư mục có tên là js trên các trang web, như vậy Bản demo đơn giản bao gồm JavaScriptDưới đây là minh họa rất đơn giản về cách đưa tệp JavaScript bên ngoài vào trang HTML JavaScript của người khácĐối với lớp này, bạn không cần phải viết bất kỳ mã JavaScript thực tế nào. Thật may mắn cho bạn, nhiều người đã viết rất nhiều JavaScript và thậm chí còn cho phép bạn sử dụng nó miễn phí Khung JavaScriptFramework về cơ bản là một thư viện mã cho một ngôn ngữ nhất định. Nói chung, khung trừu tượng hóa các tác vụ phổ biến và giúp các nhà thiết kế và nhà phát triển viết mã cụ thể của họ dễ dàng và nhanh hơn. Các khung không thực sự tự làm bất cứ điều gì, chúng chỉ cung cấp một nền tảng dễ dàng hơn để mọi người xây dựng trên đó Khung JavaScript phổ biến Trong số các khung này, JQuery hiện là khung phổ biến nhất. Đó cũng là từ mà bạn muốn gặp nhất khi được sử dụng như một từ thông dụng Kích thước tệp JavaScriptNhiều tệp JavaScript có xu hướng khá lớn, điều này có thể làm chậm thời gian tải trang của bạn. Các khung phổ biến thường cung cấp phiên bản mã "rút gọn" của chúng. Bạn phải luôn sử dụng phiên bản này trong các trang của mình vì phiên bản này sẽ có kích thước tệp nhỏ hơn Bây giờ chúng ta sẽ xem xét các sự cố JavaScript phổ biến trên nhiều trình duyệt và cách khắc phục chúng. Điều này bao gồm thông tin về cách sử dụng các công cụ dành cho nhà phát triển trình duyệt để theo dõi và khắc phục sự cố, cách sử dụng Polyfill và thư viện để khắc phục sự cố, giúp các tính năng JavaScript hiện đại hoạt động trong các trình duyệt cũ hơn, v.v. điều kiện tiên quyết. Quen thuộc với các ngôn ngữ HTML, CSS và JavaScript cốt lõi; . Khách quan. Để có thể chẩn đoán các sự cố phổ biến trên nhiều trình duyệt JavaScript và sử dụng các công cụ và kỹ thuật thích hợp để khắc phục chúngTrong lịch sử, JavaScript đã gặp khó khăn với các vấn đề tương thích giữa nhiều trình duyệt - trở lại những năm 1990, các lựa chọn trình duyệt chính khi đó (Internet Explorer và Netscape) đã triển khai tập lệnh theo các hương vị ngôn ngữ khác nhau (Netscape có JavaScript, IE có JScript và cũng cung cấp VBScript dưới dạng Những vấn đề không tương thích như vậy vẫn tồn tại cho đến đầu những năm 2000, vì các trình duyệt cũ vẫn đang được sử dụng và vẫn cần được hỗ trợ. Đây là một trong những lý do chính khiến các thư viện như jQuery ra đời — để loại bỏ những khác biệt trong việc triển khai trình duyệt (e. g. xem đoạn mã trong ) để các nhà phát triển chỉ phải viết một đoạn mã đơn giản (xem 7). jQuery (hoặc bất kỳ thư viện nào bạn đang sử dụng) sau đó sẽ xử lý các khác biệt trong nền, vì vậy bạn không cần phảiMọi thứ đã được cải thiện đáng kể kể từ đó; Ngày nay, hầu hết các sự cố JavaScript trên nhiều trình duyệt đều được nhìn thấy
Chúng ta sẽ khám phá tất cả những vấn đề này và nhiều vấn đề khác bên dưới Như chúng tôi đã nói trong phần về HTML/CSS, bạn nên đảm bảo rằng mã của mình đang hoạt động bình thường, trước khi tiếp tục tập trung vào các vấn đề liên trình duyệt. Nếu bạn chưa quen với kiến thức cơ bản về Khắc phục sự cố JavaScript, bạn nên nghiên cứu bài viết đó trước khi tiếp tục. Có một số vấn đề phổ biến về JavaScript mà bạn sẽ muốn lưu ý, chẳng hạn như
Ghi chú. Mã JavaScript lỗi. 10 lỗi phổ biến nhất mà các nhà phát triển JavaScript mắc phải có một số cuộc thảo luận thú vị về những lỗi phổ biến này và hơn thế nữa Cũng giống như , bạn có thể đảm bảo mã JavaScript có chất lượng tốt hơn, ít lỗi hơn bằng cách sử dụng trình nói dối, chỉ ra lỗi và cũng có thể gắn cờ cảnh báo về các phương pháp không phù hợp, v.v. và được tùy chỉnh để chặt chẽ hơn hoặc thoải mái hơn trong báo cáo lỗi/cảnh báo của họ. JavaScript/ECMAScript linters chúng tôi khuyên dùng là JSHint và ESLint; Trực tuyếnTrang chủ JSHint cung cấp một trình nói dối trực tuyến, cho phép bạn nhập mã JavaScript ở bên trái và cung cấp kết quả ở bên phải, bao gồm số liệu, cảnh báo và lỗi Plugin chỉnh sửa mãSẽ không thuận tiện lắm khi phải sao chép và dán mã của bạn vào một trang web để kiểm tra tính hợp lệ của nó nhiều lần. Những gì bạn thực sự muốn là một kẻ nói dối sẽ phù hợp với quy trình làm việc tiêu chuẩn của bạn với ít rắc rối nhất. Nhiều trình chỉnh sửa mã có plugin linter, ví dụ trình chỉnh sửa mã Atom của GitHub có sẵn plugin JSHint Để cài đặt nó
sử dụng khácCó nhiều cách khác để sử dụng xơ vải như vậy; Điều đáng nói là sử dụng dòng lệnh — bạn có thể cài đặt các công cụ này dưới dạng tiện ích dòng lệnh (có sẵn qua CLI — giao diện dòng lệnh) bằng cách sử dụng npm (Trình quản lý gói nút — trước tiên bạn sẽ phải cài đặt NodeJS). Ví dụ: lệnh sau cài đặt JSHint
Sau đó, bạn có thể trỏ các công cụ này vào các tệp JavaScript mà bạn muốn lint chẳng hạn Bạn cũng có thể sử dụng các công cụ này với một công cụ xây dựng/chạy tác vụ như Gulp hoặc Webpack để tự động lint JavaScript của bạn trong quá trình phát triển. (xem ở bài viết sau. ) Xem phần tích hợp ESLint để biết các tùy chọn ESLint; . g. Trình tải JSHint cho Webpack Ghi chú. ESLint cần thiết lập và cấu hình nhiều hơn một chút so với JSHint, nhưng nó cũng mạnh hơn Các công cụ dành cho nhà phát triển trình duyệt có nhiều tính năng hữu ích giúp gỡ lỗi JavaScript. Để bắt đầu, bảng điều khiển JavaScript sẽ báo lỗi trong mã của bạn Tạo một bản sao cục bộ của ajax bị hỏng của chúng tôi. html ví dụ (cũng xem mã nguồn) Nếu bạn nhìn vào bảng điều khiển, bạn sẽ thấy thông báo lỗi "Uncaught TypeError. không thể truy cập thuộc tính "độ dài", anh hùng không được xác định và số dòng được tham chiếu là 49. Nếu chúng ta xem mã nguồn, phần mã có liên quan là đây
Vì vậy, mã bị lỗi ngay khi chúng tôi cố gắng truy cập thuộc tính của 9 (như bạn có thể mong đợi, được coi là một đối tượng JSON). Điều này được cho là được tìm nạp từ tệp 0 bên ngoài bằng cách sử dụng lệnh gọi XMLHttpRequest sau
Nhưng điều này không thành công API bảng điều khiểnBạn có thể đã biết điều gì sai với mã này, nhưng hãy khám phá nó thêm một chút để chỉ ra cách bạn có thể điều tra điều này. Để bắt đầu, có API bảng điều khiển cho phép mã JavaScript tương tác với bảng điều khiển JavaScript của trình duyệt. Nó có sẵn một số tính năng, nhưng tính năng chính bạn sẽ sử dụng thường xuyên là 1, in thông báo tùy chỉnh tới bảng điều khiểnHãy thử chèn dòng sau ngay bên dưới dòng 31 (được in đậm ở trên)
Làm mới trang trong trình duyệt và bạn sẽ nhận được kết quả trong bảng điều khiển "Giá trị phản hồi. ", cùng với thông báo lỗi mà chúng tôi đã thấy trước đây Đầu ra 1 cho thấy đối tượng 3 dường như không chứa bất kỳ thứ gì. Một vấn đề rất phổ biến với các yêu cầu không đồng bộ như thế này là khi bạn cố gắng làm điều gì đó với đối tượng 4 trước khi nó thực sự được trả về từ mạng. Hãy khắc phục sự cố này bằng cách chạy mã sau khi sự kiện 5 đã được kích hoạt — xóa dòng 1 và cập nhật khối mã này
theo sau
Tóm lại, bất cứ khi nào một cái gì đó không hoạt động và một giá trị dường như không đúng với ý nghĩa của nó tại một số điểm trong mã của bạn, bạn có thể sử dụng 1 để in nó ra và xem điều gì đang xảy raSử dụng trình gỡ lỗi JavaScriptThật không may, chúng tôi vẫn gặp lỗi tương tự — sự cố vẫn chưa biến mất. Hãy điều tra vấn đề này ngay bây giờ, sử dụng một tính năng tinh vi hơn của các công cụ dành cho nhà phát triển trình duyệt. trình gỡ lỗi JavaScript như nó được gọi trong Firefox Ghi chú. Các công cụ tương tự có sẵn trong các trình duyệt khác; Trong Firefox, tab Trình gỡ lỗi trông như sau
Tính năng chính của những công cụ như vậy là khả năng thêm các điểm dừng vào mã — đây là những điểm mà quá trình thực thi mã dừng lại và tại thời điểm đó, bạn có thể kiểm tra môi trường ở trạng thái hiện tại và xem điều gì đang xảy ra Cùng bắt tay vào làm. Lỗi hiện đang được đưa ra ở dòng 51. Nhấp vào dòng số 51 trong bảng điều khiển trung tâm để thêm một điểm dừng cho nó (bạn sẽ thấy một mũi tên màu xanh lam xuất hiện trên đỉnh của nó). Bây giờ hãy làm mới trang (Cmd/Ctrl + R) — trình duyệt sẽ tạm dừng thực thi mã ở dòng 51. Lúc này, bên tay phải sẽ cập nhật để hiển thị một số thông tin rất hữu ích
Chúng ta có thể tìm hiểu một số thông tin rất hữu ích tại đây
Chúng tôi muốn bạn thử tự khắc phục sự cố này. Để cung cấp cho bạn manh mối, bạn có thể yêu cầu đối tượng XMLHttpRequest trả về định dạng JSON một cách rõ ràng hoặc sau khi có phản hồi. Nếu bạn gặp khó khăn, hãy tham khảo ajax cố định của chúng tôi. ví dụ html Ghi chú. Tab trình gỡ lỗi có nhiều tính năng hữu ích khác mà chúng tôi chưa thảo luận ở đây, chẳng hạn như các điểm dừng có điều kiện và biểu thức xem. Để biết thêm thông tin, hãy xem trang Trình gỡ lỗi Khi ứng dụng của bạn trở nên phức tạp hơn và bạn bắt đầu sử dụng nhiều JavaScript hơn, bạn có thể bắt đầu gặp phải các vấn đề về hiệu suất, đặc biệt là khi xem ứng dụng trên các thiết bị chậm hơn. Hiệu suất là một chủ đề lớn và chúng tôi không có thời gian để trình bày chi tiết ở đây. Một số mẹo nhanh như sau
Ghi chú. Addy Osmani's Viết JavaScript nhanh, tiết kiệm bộ nhớ chứa rất nhiều chi tiết và một số mẹo tuyệt vời để tăng hiệu suất JavaScript Trong phần này, chúng ta sẽ xem xét một số sự cố JavaScript trên nhiều trình duyệt phổ biến hơn. Chúng tôi sẽ chia nó thành
Trong phần này, chúng tôi đã mô tả một số cách xử lý các lỗi HTML và CSS cũng như các tính năng không nhận dạng được do bản chất của ngôn ngữ. Tuy nhiên, JavaScript không được phép như HTML và CSS - nếu công cụ JavaScript gặp phải lỗi hoặc cú pháp không được nhận dạng, thường thì nó sẽ đưa ra lỗi Có một số tính năng ngôn ngữ JavaScript hiện đại được xác định trong các phiên bản gần đây của thông số kỹ thuật sẽ không hoạt động trong các trình duyệt cũ hơn. Một số trong số này là đường cú pháp (về cơ bản là cách viết dễ dàng hơn, đẹp hơn những gì bạn có thể làm bằng các tính năng hiện có) và một số cung cấp các khả năng mới thú vị Ví dụ
Ngoài ra còn có nhiều API mới xuất hiện trong các trình duyệt gần đây, chẳng hạn như không hoạt động trong các trình duyệt cũ hơn
Có một số chiến lược để xử lý sự không tương thích giữa các trình duyệt liên quan đến hỗ trợ tính năng; Ghi chú. Các chiến lược này không tồn tại trong các silo riêng biệt — tất nhiên, bạn có thể kết hợp chúng khi cần thiết. Ví dụ: bạn có thể sử dụng tính năng phát hiện tính năng để xác định xem một tính năng có được hỗ trợ hay không; phát hiện tính năngÝ tưởng đằng sau tính năng phát hiện tính năng là bạn có thể chạy thử nghiệm để xác định xem một tính năng JavaScript có được hỗ trợ trong trình duyệt hiện tại hay không, sau đó chạy mã có điều kiện để cung cấp trải nghiệm chấp nhận được cả trong các trình duyệt hỗ trợ và không hỗ trợ tính năng này. Ví dụ nhanh, Geolocation API (hiển thị dữ liệu vị trí có sẵn cho thiết bị mà trình duyệt web đang chạy trên đó) có một điểm vào chính để sử dụng nó — một thuộc tính 5 có sẵn trên đối tượng Bộ điều hướng chung. Do đó, bạn có thể phát hiện xem trình duyệt có hỗ trợ định vị địa lý hay không bằng cách sử dụng một số thứ như sau
Bạn cũng có thể viết một bài kiểm tra như vậy cho một tính năng CSS, chẳng hạn bằng cách kiểm tra sự tồn tại của phần tử. Phong cách. tài sản (e. g. 6). Nhưng đối với cả CSS và JavaScript, có lẽ tốt hơn là sử dụng thư viện phát hiện tính năng đã được thiết lập thay vì viết thư của riêng bạn mọi lúc. Modernizr là tiêu chuẩn công nghiệp cho các bài kiểm tra phát hiện tính năngĐiểm cuối cùng, đừng nhầm lẫn giữa phát hiện tính năng với trình duyệt đánh hơi (phát hiện trình duyệt cụ thể nào đang truy cập trang web) — đây là một thực tế tồi tệ nên được ngăn chặn bằng mọi giá. Xem, sau này, để biết thêm chi tiết Ghi chú. Một số tính năng được biết là không thể phát hiện — xem danh sách Không thể phát hiện của Modernizr Ghi chú. Phát hiện tính năng sẽ được trình bày chi tiết hơn trong bài viết riêng của nó, ở phần sau của mô-đun thư việnCác thư viện JavaScript về cơ bản là các đơn vị mã của bên thứ ba mà bạn có thể đính kèm vào trang của mình, cung cấp cho bạn vô số chức năng làm sẵn có thể sử dụng ngay, giúp bạn tiết kiệm rất nhiều thời gian trong quá trình này. Rất nhiều thư viện JavaScript có thể ra đời vì nhà phát triển của chúng đang viết một tập hợp các hàm tiện ích phổ biến để tiết kiệm thời gian khi viết các dự án trong tương lai và quyết định phát hành chúng vào tự nhiên vì những người khác cũng có thể thấy chúng hữu ích Các thư viện JavaScript có xu hướng có một số loại chính (một số thư viện sẽ phục vụ nhiều hơn một trong những mục đích này)
Khi chọn một thư viện để sử dụng, hãy đảm bảo rằng thư viện đó hoạt động trên bộ trình duyệt mà bạn muốn hỗ trợ và kiểm tra kỹ lưỡng việc triển khai của bạn. Ngoài ra, hãy đảm bảo rằng thư viện phổ biến và được hỗ trợ tốt và không có khả năng trở nên lỗi thời vào tuần tới. Nói chuyện với các nhà phát triển khác để tìm hiểu những gì họ đề xuất, xem thư viện có bao nhiêu hoạt động và bao nhiêu người đóng góp trên GitHub (hoặc bất kỳ nơi nào khác mà thư viện được lưu trữ), v.v. Việc sử dụng thư viện ở mức cơ bản có xu hướng bao gồm việc tải xuống các tệp của thư viện (JavaScript, có thể là một số CSS hoặc các tệp phụ thuộc khác) và đính kèm chúng vào trang của bạn (e. g. thông qua phần tử 0), mặc dù thông thường có nhiều tùy chọn sử dụng khác cho các thư viện như vậy, như cài đặt chúng dưới dạng các thành phần Bower hoặc bao gồm chúng dưới dạng phụ thuộc thông qua gói mô-đun Webpack. Bạn sẽ phải đọc các trang cài đặt riêng lẻ của thư viện để biết thêm thông tinGhi chú. Bạn cũng sẽ bắt gặp các khung JavaScript trong hành trình của mình trên Web, như Ember và Angular. Trong khi các thư viện thường được sử dụng để giải quyết các vấn đề riêng lẻ và thả vào các trang web hiện có, thì các khung có xu hướng phù hợp hơn với các giải pháp hoàn chỉnh để phát triển các ứng dụng web phức tạp. polyfillPolyfill cũng bao gồm các tệp JavaScript của bên thứ 3 mà bạn có thể thả vào dự án của mình, nhưng chúng khác với thư viện — trong khi thư viện có xu hướng nâng cao chức năng hiện có và giúp mọi thứ dễ dàng hơn, polyfill cung cấp chức năng hoàn toàn không tồn tại. Polyfill sử dụng hoàn toàn JavaScript hoặc các công nghệ khác để xây dựng hỗ trợ cho một tính năng mà trình duyệt không hỗ trợ nguyên bản. Ví dụ: bạn có thể sử dụng một polyfill như es6-promise để thực hiện các lời hứa hoạt động trong các trình duyệt không được hỗ trợ nguyên bản Danh sách Polyfill trình duyệt chéo HTML5 của Modernizr là một nơi hữu ích để tìm các polyfill cho các mục đích khác nhau. Một lần nữa, bạn nên nghiên cứu chúng trước khi sử dụng — đảm bảo rằng chúng hoạt động và được bảo trì Hãy cùng thực hiện một bài tập — trong ví dụ này, chúng ta sẽ sử dụng Fetch polyfill để cung cấp hỗ trợ cho Fetch API trong các trình duyệt cũ hơn;
Ghi chú. Bạn có thể tìm thấy phiên bản đã hoàn thành của chúng tôi tại tìm nạp-polyfill-finished. html (xem thêm mã nguồn) Ghi chú. Một lần nữa, có nhiều cách khác nhau để sử dụng các polyfill khác nhau mà bạn sẽ gặp — tham khảo tài liệu riêng của từng polyfill Một điều bạn có thể nghĩ là "tại sao chúng ta phải luôn tải mã polyfill, ngay cả khi chúng ta không cần nó?" . , bạn có thể bắt đầu tải nhiều mã bổ sung, điều này có thể bắt đầu ảnh hưởng đến hiệu suất, đặc biệt là trên các thiết bị yếu hơn. Thật hợp lý khi chỉ tải các tệp khi cần thiết Làm điều này yêu cầu một số thiết lập bổ sung trong JavaScript của bạn. Bạn cần một số loại kiểm tra phát hiện tính năng để phát hiện xem trình duyệt có hỗ trợ tính năng mà chúng tôi đang cố gắng sử dụng hay không
Vì vậy, trước tiên, chúng tôi chạy một điều kiện để kiểm tra xem hàm 3 có trả về true hay không. Nếu đúng như vậy, chúng ta sẽ chạy hàm 4, hàm này sẽ chứa tất cả mã ứng dụng của chúng ta. 3 trông như thế này 0Ở đây chúng tôi đang kiểm tra xem đối tượng 6 và chức năng 7 có tồn tại trong trình duyệt hay không. Nếu cả hai đều như vậy, hàm trả về true. Nếu hàm trả về 8, thì chúng tôi chạy mã bên trong phần thứ hai của điều kiện — phần này chạy một hàm gọi là loadScript(), hàm này tải các polyfill vào trang, sau đó chạy 4 sau khi quá trình tải kết thúc. 0 trông như thế này 1Hàm này tạo một phần tử 0 mới, sau đó đặt thuộc tính 2 của nó thành đường dẫn mà chúng ta đã chỉ định làm đối số đầu tiên ( 3 khi chúng ta gọi nó trong đoạn mã trên). Khi nó đã được tải, chúng tôi chạy hàm mà chúng tôi đã chỉ định làm đối số thứ hai ( 4). Nếu xảy ra lỗi trong quá trình tải tập lệnh, chúng tôi vẫn gọi hàm nhưng với lỗi tùy chỉnh mà chúng tôi có thể truy xuất để giúp gỡ lỗi sự cố nếu xảy raLưu ý rằng polyfill. js về cơ bản là hai polyfill mà chúng tôi đang sử dụng được kết hợp với nhau thành một tệp. Chúng tôi đã thực hiện việc này theo cách thủ công nhưng có những giải pháp thông minh hơn sẽ tự động tạo các gói cho bạn — xem Browserify (xem Bắt đầu với Browserify để có hướng dẫn cơ bản). Bạn nên gộp các tệp JS thành một tệp như thế này — giảm số lượng yêu cầu HTTP mà bạn cần để cải thiện hiệu suất trang web của mình Bạn có thể thấy mã này hoạt động trong tìm nạp-chỉ-đa-điền-khi-cần. html (cũng xem mã nguồn). Chúng tôi muốn làm rõ rằng chúng tôi không thể công nhận mã này - nó được viết bởi Philip Walton. Hãy xem bài viết của anh ấy Chỉ tải các Polyfill khi cần thiết cho mã gốc, cộng với rất nhiều lời giải thích hữu ích xung quanh chủ đề rộng hơn) Ghi chú. Có một số tùy chọn của bên thứ 3 để xem xét, ví dụ Polyfill. io — đây là thư viện meta-polyfill sẽ xem xét khả năng của từng trình duyệt và áp dụng các polyfill khi cần, tùy thuộc vào API và tính năng JS nào bạn đang sử dụng trong mã của mình phiên mã JavaScriptMột tùy chọn khác hiện đang trở nên phổ biến đối với những người muốn sử dụng các tính năng JavaScript hiện đại là chuyển đổi mã sử dụng các tính năng ECMAScript 6/ECMAScript 2015 sang phiên bản sẽ hoạt động trong các trình duyệt cũ hơn Ghi chú. Điều này được gọi là "chuyển mã" - bạn không biên dịch mã thành cấp thấp hơn để chạy trên máy tính (như bạn sẽ nói với mã C); Vì vậy, ví dụ, chúng ta đã nói về hàm mũi tên (xem hàm mũi tên. html trực tiếp và xem mã nguồn) trước đó trong bài viết, mã này chỉ hoạt động trong các trình duyệt mới nhất 2Chúng tôi có thể dịch mã này sang một chức năng ẩn danh kiểu cũ truyền thống, vì vậy nó sẽ hoạt động trong các trình duyệt cũ hơn 3Công cụ được đề xuất để chuyển mã JavaScript hiện tại là Babel. Điều này cung cấp khả năng dịch cho các tính năng ngôn ngữ phù hợp với dịch. Đối với các tính năng không thể dễ dàng dịch mã thành một tính năng tương đương cũ hơn, Babel cũng cung cấp các polyfill để cung cấp hỗ trợ Cách dễ nhất để dùng thử Babel là sử dụng phiên bản trực tuyến, cho phép bạn nhập mã nguồn của mình ở bên trái và xuất ra phiên bản đã biên dịch ở bên phải Ghi chú. Có nhiều cách để sử dụng Babel (trình chạy tác vụ, công cụ tự động hóa, v.v. ), như bạn sẽ thấy trên trang thiết lập Tất cả các trình duyệt đều có một chuỗi tác nhân người dùng, xác định trình duyệt đó là gì (phiên bản, tên, hệ điều hành, v.v. ). Trước đây, các nhà phát triển đã sử dụng mã đánh hơi trình duyệt để phát hiện trình duyệt nào người dùng đang sử dụng và cung cấp cho họ mã thích hợp để hoạt động trên trình duyệt đó Mã được sử dụng để trông giống như thế này (mặc dù đây là một ví dụ đơn giản hóa) 4Ý tưởng này có vẻ hợp lý — phát hiện trình duyệt nào đang xem trang web và cung cấp mã phù hợp với trình duyệt đó Ghi chú. Hãy thử mở bảng điều khiển JavaScript của bạn ngay bây giờ và chạy 5, để xem những gì bạn nhận đượcTuy nhiên, thời gian trôi qua, các nhà phát triển bắt đầu thấy những vấn đề lớn với phương pháp này. Để bắt đầu, mã dễ bị lỗi. Điều gì sẽ xảy ra nếu bạn biết một tính năng không hoạt động trong Firefox 10 trở xuống và triển khai mã để phát hiện tính năng này, sau đó Firefox 11 ra mắt — hỗ trợ tính năng đó? . Bạn sẽ phải thay đổi tất cả mã đánh hơi của mình thường xuyên Nhiều nhà phát triển đã triển khai mã đánh hơi trình duyệt xấu và không duy trì mã đó, đồng thời các trình duyệt bắt đầu không thể sử dụng các trang web có chứa các tính năng mà họ đã triển khai kể từ đó. Điều này trở nên phổ biến đến mức các trình duyệt bắt đầu nói dối về trình duyệt của họ trong chuỗi tác nhân người dùng của họ (hoặc tuyên bố rằng tất cả họ đều là trình duyệt), để tìm mã đánh hơi. Các trình duyệt cũng triển khai các phương tiện để cho phép người dùng thay đổi chuỗi tác nhân người dùng mà trình duyệt đã báo cáo khi được truy vấn bằng JavaScript. Tất cả điều này làm cho trình duyệt đánh hơi dễ bị lỗi hơn và cuối cùng là vô nghĩa Ghi chú. Bạn nên đọc Lịch sử chuỗi tác nhân người dùng trình duyệt của Aaron Andersen để biết cách xử lý tình huống này hữu ích và thú vị Bài học rút ra ở đây là đừng bao giờ sử dụng trình duyệt đánh hơi. Trường hợp sử dụng thực sự duy nhất cho mã đánh hơi trình duyệt trong thời hiện đại là nếu bạn đang triển khai sửa lỗi trong một phiên bản rất cụ thể của một trình duyệt cụ thể. Nhưng ngay cả khi đó, hầu hết các lỗi đều được sửa khá nhanh trong các chu kỳ phát hành nhanh của nhà cung cấp trình duyệt. Nó sẽ không xuất hiện thường xuyên. hầu như luôn là một lựa chọn tốt hơn — nếu bạn phát hiện xem một tính năng có được hỗ trợ hay không, bạn sẽ không cần thay đổi mã của mình khi các phiên bản trình duyệt mới ra mắt và các thử nghiệm sẽ đáng tin cậy hơn nhiều Nếu bạn bắt gặp trình duyệt đánh hơi khi tham gia một dự án hiện có, hãy xem liệu nó có thể được thay thế bằng thứ gì đó hợp lý hơn không. Trình duyệt đánh hơi gây ra tất cả các loại lỗi thú vị, chẳng hạn như lỗi 1308462 Trong bài viết trước, chúng tôi đã thảo luận khá nhiều về. Chà, các triển khai JavaScript mới đôi khi cũng sử dụng tiền tố, mặc dù JavaScript sử dụng trường hợp lạc đà thay vì gạch nối như CSS. Ví dụ: nếu một tiền tố đang được sử dụng trên một đối tượng API jshint mới có tên là 6
Đây là một ví dụ, được lấy từ bản demo bạo lực theremin của chúng tôi (xem mã nguồn), sử dụng kết hợp API Canvas và API âm thanh trên web để tạo một công cụ vẽ thú vị (và ồn ào) 5Trong trường hợp API âm thanh trên web, các điểm nhập chính để sử dụng API đã được hỗ trợ trong Chrome/Opera thông qua các phiên bản có tiền tố 0 (hiện tại chúng hỗ trợ các phiên bản không có tiền tố). Cách dễ dàng để giải quyết tình huống này là tạo một phiên bản mới của các đối tượng có tiền tố trong một số trình duyệt và làm cho nó bằng với phiên bản không có tiền tố, HOẶC phiên bản có tiền tố (HOẶC bất kỳ phiên bản có tiền tố nào khác cần xem xét) — Sau đó, chúng tôi sử dụng đối tượng đó để thao tác API, thay vì đối tượng ban đầu. Trong trường hợp này, chúng tôi đang tạo một hàm tạo AudioContext đã sửa đổi, sau đó tạo một phiên bản ngữ cảnh âm thanh mới để sử dụng cho mã hóa Web Audio của chúng tôi Mẫu này có thể được áp dụng cho bất kỳ tính năng JavaScript có tiền tố nào. Các thư viện/polyfill JavaScript cũng sử dụng loại mã này để trừu tượng hóa sự khác biệt của trình duyệt khỏi nhà phát triển càng nhiều càng tốt Một lần nữa, các tính năng có tiền tố không bao giờ được phép sử dụng trong các trang web sản xuất — chúng có thể thay đổi hoặc xóa mà không có cảnh báo và gây ra sự cố trình duyệt chéo. Nếu bạn khăng khăng sử dụng các tính năng có tiền tố, hãy đảm bảo rằng bạn sử dụng đúng tính năng. Bạn có thể tra cứu những trình duyệt nào yêu cầu tiền tố cho các tính năng JavaScript/API khác nhau trên các trang tham khảo MDN và các trang web như caniuse. com. Nếu không chắc chắn, bạn cũng có thể tìm hiểu bằng cách thực hiện một số thử nghiệm trực tiếp trên trình duyệt Ví dụ: hãy thử truy cập bảng điều khiển dành cho nhà phát triển của trình duyệt của bạn và bắt đầu nhập 6Nếu tính năng này được hỗ trợ trong trình duyệt của bạn, nó sẽ tự động hoàn thành Có nhiều vấn đề khác mà bạn sẽ gặp phải với JavaScript; . Tham khảo bài viết về HTML và CSS để có lời khuyên tốt nhất của chúng tôi Vậy đó là JavaScript. Đơn giản hả? Tại sao JavaScript của tôi không hoạt động trong HTML?Nếu mã JavaScript của bạn không hoạt động, điều đầu tiên bạn nên làm là kiểm tra thẻ . Khi bạn đưa JavaScript vào tài liệu HTML của mình bằng thẻ
Làm cách nào để bật JavaScript trong HTML?Kích hoạt JavaScript trong Google Chrome . Mở Chrome trên máy tính của bạn Nhấp chuột. Cài đặt Nhấp vào Bảo mật và quyền riêng tư Nhấp vào Cài đặt trang web Nhấp vào JavaScript Chọn Trang web có thể sử dụng Javascript Tôi có thể đặt mã js trong tệp HTML không?JavaScript trong hoặc
. Tập lệnh có thể được đặt trong hoặc trong phần của trang HTML hoặc trong cả hai. You can place any number of scripts in an HTML document. Scripts can be placed in the , or in the section of an HTML page, or in both.
Làm cách nào để chèn js vào HTML?Adding JavaScript into an HTML Document
You can add JavaScript code in an HTML document by employing the dedicated HTML tag
Bài Viết Liên QuanQuảng CáoCó thể bạn quan tâmToplist được quan tâm#1
Top 7 sự tích hồ gươm - ngữ văn lớp 6 202311 tháng trước#2
Top 7 gdcd 6 bài 1 kết nối tri thức 202311 tháng trước#3
Top 7 ý nghĩa của xây dựng gia đình văn hóa 202311 tháng trước#4
Top 6 mẫu hợp đồng mượn đất làm nhà xưởng 202311 tháng trước#5
Top 3 tổng tài biến thái tôi yêu anh tập 27 202311 tháng trước#6
Top 6 kết thực phim mỹ nhân vô lệ 202311 tháng trước#7
Top 9 trong những câu thơ sau câu nào sử dụng thành ngữ 202311 tháng trước#8
Top 8 đề tài và chủ de của tác phẩm tắt đèn 202311 tháng trước#9
Top 5 tiểu sử của thầy thích pháp hòa 202311 tháng trướcQuảng cáoXem NhiềuQuảng cáoChúng tôiTrợ giúpBản quyền © 2021 Học Tốt Inc.
|