Câu hỏi thường gặp

Nếu bạn không tìm thấy câu trả lời cho câu hỏi của mình tại đây, hãy thử Câu hỏi thường gặp về Cửa hàng Chrome trực tuyến, Thẻ [google-chrome-extension] trên Stack Overflow, nhóm tiện ích chromium hoặc trợ giúp về cửa hàng.

Giải pháp chung

Tiện ích của Google Chrome là gì?

Tiện ích của Google Chrome là các ứng dụng chạy bên trong trình duyệt Chrome và cung cấp thêm chức năng, tích hợp với các trang web hoặc dịch vụ của bên thứ ba và trình duyệt tuỳ chỉnh của bạn.

Làm cách nào để thiết lập Chrome để phát triển tiện ích?

Miễn là bạn đang sử dụng một phiên bản Chrome hỗ trợ tiện ích, bạn đã có mọi thứ bạn cần bắt đầu tự viết một phần mở rộng. Bạn có thể bắt đầu bằng cách bật Chế độ nhà phát triển.

Nhấp vào biểu tượng trình đơn Chrome rồi chọn Tiện ích từ trình đơn Công cụ. Đảm bảo rằng "Chế độ nhà phát triển" hộp đánh dấu ở góc trên cùng bên phải được đánh dấu. Bây giờ, bạn có thể tải lại tiện ích mở rộng, tải thư mục tệp đã giải nén như thể đó là tiện ích đóng gói và nhiều tính năng khác. Đối với hướng dẫn đầy đủ, hãy xem Bắt đầu.

Những công nghệ nào được dùng để viết tiện ích cho Chrome?

Tiện ích được viết bằng chính công nghệ web chuẩn mà nhà phát triển sử dụng để tạo của bạn. HTML được dùng làm ngôn ngữ đánh dấu nội dung, CSS được dùng để định kiểu và JavaScript cho tập lệnh. Vì Chrome hỗ trợ HTML5 và CSS3, nhà phát triển có thể sử dụng phiên bản web mở mới nhất như canvas và ảnh động CSS trong tiện ích của chúng. Các tiện ích cũng có quyền truy cập vào một số API JavaScript giúp thực hiện các hàm như mã hoá JSON và tương tác với trình duyệt.

Các tiện ích có được tìm nạp từ web mỗi khi trình duyệt được tải không?

Trình duyệt Chrome tải các tiện ích xuống khi cài đặt và sau đó sẽ chạy khỏi ổ đĩa cục bộ để tăng hiệu suất. Tuy nhiên, nếu phiên bản mới của tiện ích được đẩy trực tuyến, tiện ích này sẽ tự động được tải xuống ở chế độ nền cho bất kỳ người dùng nào có tiện ích . Tiện ích cũng có thể yêu cầu nội dung từ xa bất cứ lúc nào để tương tác bằng dịch vụ web hoặc lấy nội dung mới từ web.

Làm cách nào để xác định phiên bản Chrome nào được triển khai cho kênh nào?

Để xác định xem phiên bản Chrome nào hiện có sẵn trên từng nền tảng khác nhau, truy cập omahaproxy.appspot.com. Trên trang web đó, bạn sẽ thấy dữ liệu ở định dạng tương tự như:

cf,dev,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
cf,beta,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
cf,stable,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
linux,dev,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
linux,beta,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
linux,stable,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
mac,dev,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
mac,beta,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
mac,stable,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
win,canary,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
win,dev,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
win,beta,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
win,stable,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
cros,dev,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
cros,beta,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####

Mỗi dòng đại diện cho thông tin về một tổ hợp kênh và nền tảng khác nhau. Danh sách là cf (Google Chrome Frame), linux, mac, wincros (Google ChromeOS). Chiến lược phát hành đĩa đơn các kênh trong danh sách là canary, dev, betastable. Hai số gồm bốn phần sau kênh đại diện cho các phiên bản hiện tại và trước đây của Chrome được triển khai cho kênh nền tảng đó kết hợp. Thông tin còn lại là siêu dữ liệu về thời điểm phát hành lần đầu tiên, chẳng hạn như cũng như số bản sửa đổi được liên kết với từng bản dựng.

Tính năng

Các tiện ích có thể tạo yêu cầu Ajax trên nhiều miền không?

Có. Tiện ích có thể thực hiện yêu cầu trên nhiều miền. Hãy xem trang này để biết thêm thông tin.

Tiện ích có thể sử dụng dịch vụ web của bên thứ ba không?

Có. Các tiện ích có khả năng tạo các yêu cầu Ajax trên nhiều miền để có thể gọi API từ xa trực tiếp. Các API cung cấp dữ liệu ở định dạng JSON đặc biệt dễ sử dụng.

Tiện ích có thể mã hoá/giải mã dữ liệu JSON không?

Có, vì V8 (công cụ JavaScript của Chrome) nguyên gốc hỗ trợ JSON.stringify và JSON.parse, nên bạn có thể sử dụng các chức năng này trong tiện ích của bạn như được mô tả tại đây mà không bao gồm bất kỳ chức năng nào khác Thư viện JSON trong mã của bạn.

Các tiện ích có thể lưu trữ dữ liệu trên máy không?

Có, các tiện ích có thể sử dụng localStorage để lưu trữ vĩnh viễn dữ liệu chuỗi. Sử dụng trình duyệt Chrome được cài sẵn Các hàm JSON nên bạn có thể lưu trữ các cấu trúc dữ liệu phức tạp trong localStorage. Đối với những tiện ích cần thực thi các truy vấn SQL trên dữ liệu được lưu trữ, Chrome sẽ triển khai cơ sở dữ liệu SQL phía máy khách. Cơ sở dữ liệu này cũng có thể được sử dụng.

Các tiện ích có thể dùng OAuth không?

Có, có những tiện ích sử dụng OAuth để truy cập các API dữ liệu từ xa. Hầu hết các nhà phát triển đều thấy tính năng này thuận tiện để sử dụng thư viện OAuth OAuth để đơn giản hoá quy trình ký OAuth yêu cầu.

Tiện ích có thể tạo giao diện người dùng bên ngoài trang web được hiển thị không?

Có, tiện ích của bạn có thể thêm các nút vào giao diện người dùng của trình duyệt Chrome. Xem trình duyệt hành độnghành động trên trang để biết thêm thông tin.

Tiện ích cũng có thể tạo thông báo bật lên, loại thông báo này tồn tại bên ngoài cửa sổ trình duyệt. Xem thông báo trên màn hình để biết thêm thông tin chi tiết.

Tiện ích có thể nghe lượt nhấp vào thẻ và nút điều hướng trên Chrome không?

Không. Các tiện ích chỉ được theo dõi các sự kiện được mô tả trong tài liệu về API.

Hai tiện ích có thể giao tiếp với nhau không?

Có, tiện ích có thể chuyển thông báo tới các tiện ích khác. Hãy xem tài liệu về cách chuyển thông báo để biết thêm thông tin.

Các phần mở rộng có thể sử dụng Google Analytics không?

Có, vì tiện ích được tạo giống như trang web nên chúng có thể sử dụng Google Analytics để theo dõi mức sử dụng. Tuy nhiên, bạn phải sửa đổi mã theo dõi để lấy phiên bản HTTPS của Google Analytics thư viện của bạn. Hãy xem hướng dẫn này để biết thêm thông tin về cách thực hiện việc này.

Tiện ích có thể sửa đổi URL chrome:// không?

Không. API tiện ích được thiết kế để giảm thiểu các vấn đề về khả năng tương thích ngược có thể phát sinh khi các phiên bản mới của trình duyệt được đẩy lên. Việc cho phép tập lệnh nội dung trên chrome:// URL có nghĩa là rằng các nhà phát triển sẽ bắt đầu dựa vào DOM, CSS và JavaScript của các trang này để giữ nguyên. Trong trường hợp tốt nhất, bạn không thể cập nhật các trang này nhanh như hiện tại. Trong trường hợp xấu nhất, việc cập nhật một trong các trang này có thể khiến tiện ích mở rộng bị lỗi, khiến các phần chính của trình duyệt ngừng hoạt động đối với người dùng tiện ích đó.

Lý do chúng tôi cho phép thay thế hoàn toàn nội dung được lưu trữ tại các URL này là vì buộc nhà phát triển tiện ích phải triển khai tất cả chức năng họ muốn mà không phụ thuộc vào triển khai nội bộ của trình duyệt để giữ nguyên.

Các tiện ích có thể mở cửa sổ bật lên chứa hành động trên trình duyệt/trang mà không cần người dùng tương tác không?

Không, người dùng chỉ có thể mở cửa sổ bật lên nếu nhấp vào trang hoặc thao tác tương ứng trên trình duyệt. Một tiện ích mở rộng không thể mở cửa sổ bật lên theo phương thức lập trình.

Tiện ích có thể giữ cho cửa sổ bật lên mở sau khi người dùng nhấp ra khỏi chúng không?

Không, cửa sổ bật lên sẽ tự động đóng khi người dùng tập trung vào một phần nào đó của trình duyệt bên ngoài cửa sổ bật lên. Không có cách nào để cửa sổ bật lên luôn mở sau khi người dùng nhấp vào.

Google có thể thông báo cho các tiện ích khi cài đặt/gỡ cài đặt tiện ích không?

Bạn có thể nghe sự kiện runtime.onInstalled để biết khi nào tiện ích được cài đặt sau khi cài đặt/cập nhật hoặc khi Chrome được cập nhật. Không có sự kiện tương ứng cho thời điểm tiện ích của bạn đã bị gỡ cài đặt.

Quá trình phát triển

Làm cách nào để xây dựng giao diện người dùng cho tiện ích của tôi?

Tiện ích sử dụng HTML và CSS để xác định giao diện người dùng, vì vậy, bạn có thể sử dụng các tuỳ chọn kiểm soát biểu mẫu chuẩn để xây dựng giao diện người dùng hoặc tạo kiểu giao diện bằng CSS, giống như cách bạn làm với một trang web. Ngoài ra, tiện ích có thể thêm một số thành phần hạn chế trên giao diện người dùng vào chính Chrome.

Tôi có thể lưu trữ bao nhiêu dữ liệu trong localStorage?

Tiện ích có thể lưu trữ tối đa 5 MB dữ liệu trong localStorage.

Làm cách nào để tạo trình đơn tuỳ chọn cho ứng dụng của tôi?

Bạn có thể cho phép người dùng đặt tùy chọn cho tiện ích của mình bằng cách tạo trang tùy chọn. Trang này là trang HTML đơn giản sẽ được tải khi người dùng nhấp vào "tuỳ chọn" cho tiện ích của bạn. Trang này có thể đọc và ghi cài đặt vào localStorage hoặc thậm chí gửi các tuỳ chọn tới máy chủ web để chúng có thể được duy trì trên các trình duyệt.

Nhà phát triển tiện ích có thể sử dụng những công cụ gỡ lỗi nào?

Bạn có thể sử dụng các công cụ dành cho nhà phát triển được tích hợp sẵn trong Chrome để gỡ lỗi các tiện ích cũng như trang web. Xem hướng dẫn cách gỡ lỗi tiện ích để biết thêm thông tin.

Tại sao kiểu khớp ký tự đại diện không hoạt động đối với miền cấp cao nhất (TLD)?

Bạn không thể sử dụng các mẫu so khớp ký tự đại diện như http://google.*/* để so khớp các TLD (như http://google.eshttp://google.fr) do tính phức tạp của việc thực sự hạn chế một chỉ khớp với các miền mong muốn.

Đối với ví dụ về http://google.*/*, các miền của Google sẽ được so khớp, nhưng cũng http://google.someotherdomain.com Ngoài ra, nhiều trang web không sở hữu tất cả các TLD cho miền. Ví dụ: giả sử bạn muốn sử dụng http://example.*/* để so khớp http://example.comhttp://example.es, nhưng http://example.net là một trang web thù địch. Nếu tiện ích của bạn gặp lỗi, trang web thù địch có thể tấn công tiện ích của bạn để lấy quyền truy cập vào đặc quyền tăng lên.

Bạn nên liệt kê rõ ràng các TLD mà bạn muốn chạy phần mở rộng của mình.

Tại sao API quản lý không kích hoạt các sự kiện khi bạn đã cài đặt/gỡ cài đặt tiện ích?

API quản lý được dùng để giúp tạo các tiện ích mới thay thế cho trang thẻ. Không phải nhằm kích hoạt các sự kiện cài đặt/gỡ cài đặt cho tiện ích hiện tại.

Làm cách nào để xác định xem tiện ích có chạy lần đầu tiên hay không?

Bạn có thể nghe sự kiện runtime.onInstalled. Hãy xem mục Câu hỏi thường gặp này.

Tính năng và lỗi

Tôi nghĩ rằng tôi đã tìm thấy lỗi! Làm cách nào để đảm bảo vấn đề được khắc phục?

Trong khi phát triển một tiện ích, bạn có thể thấy hành vi không phù hợp với các tiện ích đó và có thể là do lỗi trong Chrome. Điều tốt nhất bạn nên làm là đảm bảo rằng báo cáo sự cố thích hợp được gửi và nhóm Chromium có đủ thông tin để tạo lại hành vi.

Bạn nên làm theo các bước sau để đảm bảo việc này:

  1. Hãy tìm một tiện ích kiểm tra tối thiểu chứng minh vấn đề mà bạn muốn báo cáo. Chiến dịch này nên có càng ít mã càng tốt để chứng minh lỗi. Thông thường, việc này Tối đa 100 dòng mã. Nhiều khi nhà phát triển thấy rằng họ không thể tái tạo vấn đề bằng cách này, đây là một chỉ báo tốt cho biết lỗi nằm trong mã của riêng họ.
  2. Tìm kiếm công cụ theo dõi lỗi tại http://crbug.com để xem có người nào đó đã báo cáo lỗi tương tự hay chưa vấn đề. Hầu hết các vấn đề liên quan đến tiện ích đều được gửi theo component=Platform>Extensions, vì vậy để tìm một lỗi tiện ích liên quan đến hàm chrome.tabs.executeScript (ví dụ), tìm kiếm "component=Platform>Extensions Type=Bug chrome.tabs.executeScript". Thao tác này sẽ cho phép bạn danh sách kết quả này.
  3. Nếu bạn tìm thấy lỗi mô tả vấn đề của mình, hãy nhấp vào biểu tượng dấu sao để được thông báo khi lỗi đó sẽ nhận được bản cập nhật. Không trả lời lỗi bằng cách nói "tôi cũng vậy" hoặc hỏi "khi nào việc này sẽ diễn ra khắc phục?"; các bản cập nhật như vậy có thể khiến hàng trăm email được gửi đi. Chỉ thêm nhận xét nếu bạn có thông tin (chẳng hạn như trường hợp kiểm tra tốt hơn hoặc bản sửa lỗi được đề xuất) có thể sẽ hữu ích.
  4. Nếu bạn không tìm thấy lỗi thích hợp để gắn dấu sao, hãy gửi báo cáo vấn đề mới tại http://crbug.com/new. Vui lòng điền thông tin rõ ràng nhất có thể vào biểu mẫu này: chọn một tiêu đề mang tính mô tả, giải thích các bước tái hiện lỗi cũng như mô tả hành vi dự kiến và hành vi thực tế. Đính kèm bài kiểm thử ví dụ vào báo cáo và thêm ảnh chụp màn hình nếu cần. Báo cáo của bạn càng giúp bạn những người khác để tái hiện vấn đề của bạn thì càng có khả năng lỗi của bạn sẽ được khắc phục nhanh chóng.
  5. Chờ lỗi được cập nhật. Hầu hết các lỗi mới được phân loại trong vòng một tuần, mặc dù có thể đôi khi mất nhiều thời gian cập nhật hơn. Đừng trả lời lỗi để hỏi khi nào vấn đề xảy ra khắc phục. Nếu lỗi của bạn chưa được sửa đổi sau hai tuần, vui lòng đăng thông báo lên nhóm thảo luận kèm theo đường liên kết quay lại lỗi của bạn.
  6. Nếu ban đầu bạn báo cáo lỗi trên nhóm thảo luận và được chuyển hướng đến mục Câu hỏi thường gặp này, trả lời chuỗi thư ban đầu của bạn kèm theo đường liên kết đến lỗi mà bạn đã gắn dấu sao hoặc báo cáo. Thao tác này sẽ giúp dễ dàng hơn cho những người gặp phải cùng một vấn đề để tìm ra lỗi chính xác.

Tôi có một yêu cầu về tính năng! Tôi có thể báo cáo hành vi đó bằng cách nào?

Nếu xác định được một tính năng (đặc biệt nếu tính năng đó liên quan đến một API thử nghiệm) có thể được thêm vào cải thiện trải nghiệm phát triển tiện ích, đảm bảo bạn đã gửi yêu cầu thích hợp về vấn đề vòng đeo tay theo dõi.

Bạn nên làm theo các bước sau để đảm bảo việc này:

  1. Tìm kiếm công cụ theo dõi lỗi tại http://crbug.com để xem có người nào đó đã yêu cầu tính năng tương tự. Hầu hết các yêu cầu liên quan đến tiện ích đều được gửi theo component=Platform>Extensions, vì vậy, để tìm yêu cầu tính năng tiện ích liên quan đến phím tắt (ví dụ), tìm kiếm "component=Platform>Extensions Type=Feature shortcuts", sẽ cung cấp cho bạn danh sách kết quả.
  2. Nếu bạn tìm thấy một phiếu yêu cầu hỗ trợ phù hợp với yêu cầu của mình, hãy nhấp vào biểu tượng dấu sao để được thông báo khi lỗi sẽ nhận được bản cập nhật. Không trả lời lỗi bằng cách nói "tôi cũng vậy" hoặc hỏi "khi nào việc này sẽ diễn ra implemented?"; các bản cập nhật như vậy có thể khiến hàng trăm email được gửi đi.
  3. Nếu bạn không tìm thấy phiếu yêu cầu hỗ trợ phù hợp để gắn dấu sao, hãy gửi một yêu cầu mới tại http://crbug.com/new. Hãy chi tiết nhất có thể khi điền vào biểu mẫu này: chọn một tiêu đề mô tả và giải thích chính xác tính năng bạn muốn và cách bạn dự định sử dụng tính năng đó.
  4. Chờ hệ thống cập nhật phiếu yêu cầu hỗ trợ. Hầu hết các yêu cầu mới được phân loại trong vòng một tuần, mặc dù đôi khi mất nhiều thời gian cập nhật hơn. Đừng trả lời phiếu yêu cầu hỗ trợ để hỏi khi nào tính năng sẽ diễn ra đã thêm. Nếu phiếu yêu cầu hỗ trợ của bạn chưa được sửa đổi sau hai tuần, vui lòng đăng thông báo lên nhóm thảo luận có đường liên kết quay lại yêu cầu của bạn.
  5. Nếu ban đầu bạn báo cáo yêu cầu của mình trên nhóm thảo luận và đã được chuyển hướng đến Câu hỏi thường gặp này hãy trả lời chuỗi thư ban đầu kèm theo đường liên kết đến phiếu yêu cầu hỗ trợ mà bạn đã gắn dấu sao hoặc mở. Thao tác này sẽ giúp những người có cùng yêu cầu tìm được vé chính xác dễ dàng hơn.