Chrome Extension: Phương thức [chrome.tabs.executeScript] không hoạt động? | [chrome.tabs.executeScript] method not working?

Hôm nay rãnh ngồi nghiêm cứu :)) Chrome Extenstion, do nó dùng JavaScript, CSS, JQuery, nên học nó cũng rất nhanh, viết cũng nhanh, nhưng gặp lỗi cũng rất nhanh. Đụng phải cái lỗi function "chrome.tabs.executeScript not working" không hoạt động. Sau khi tìm hiểu thì có 2 nguyên nhân gây là lỗi này.


Nguyên nhân gây ra lỗi đầu tiên là trong file "manifest.json" bạn chưa thiết lập quyền "permissions" cho các "tab" hoặc "domain" thông thường nếu không có ràng buộc cụ thế thì ta chỉ cần thiết lập thông số "permissions" cho tab theo cấu trúc bên dưới là được.
  "permissions": [
    "tabs", "<all_urls>"
  ],

Còn nếu như bạn muốn thiết lập các lệnh(script) chạy trên các trang được chỉ định thì bạn thiết lập như sau"
  "permissions": [
    "tabs", "http://www.google.com/*", "https://*/*"
  ],

Nguyên nhân còn lại khá đơn giản là bạn đã viết sai cấu trúc lệnh, hoặc truyền sai tham số cho nó, cú pháp method của lệnh theo google là "chrome.tabs.executeScript(integer tabId, object details, function callback)", các thông số nó thì có vẻ hơi phức tạp, và trong thực tế thì ta thường dùng chỉ một thông số  theo ví dụ  bên dưới.
  chrome.tabs.executeScript({
    file: 'alert.js'
  });

Còn nếu bạn muốn sử dụng đúng cấu trúc nó để trả về một kết quả (callback) thì bạn thể xem ví dụ bên dưới để hiểu cách sử dụng nó, với ví dụ này khi được thực thi thì kết quả trả về ở màn hình console của trình duyệt sẽ là 10.
chrome.tabs.executeScript(
    null,
    {code:"var x = 10; x"},
    function(results){ console.log(results); }
);


Writer by Bui Ngoc Son



No comments:

Post a Comment