“ ไม่รองรับ Chrome.tabs …”


15

ฉันได้รับข้อผิดพลาดนี้เสมอในคอนโซลของ Chrome

Uncaught Error: chrome.tabs is not supported in content scripts. See the content scripts documentation for more details.

แต่ทุกอย่างทำงานได้ดี

ใครรู้ว่าอะไรทำให้เกิดสิ่งนี้และฉันจะแก้ปัญหาได้อย่างไร

คำตอบ:


36

โดยทั่วไปสาเหตุคือส่วนขยายที่ทำงานผิดปกติ ในกรณีของฉันมันคือ "MeasureIt!" ในการระบุว่าส่วนขยายใดที่ทำให้เกิดปัญหาคุณสามารถทำได้

ปิดการใช้งานทีละคนและทดสอบ

  1. ปิดใช้งานส่วนขยายทั้งหมด
  2. ตรวจสอบให้แน่ใจว่าข้อผิดพลาดหายไป
  3. เปิดใช้งานส่วนขยายทีละราย
  4. ทดสอบว่าข้อผิดพลาดปรากฏขึ้นซ้ำจากขั้นตอนที่ 3

หรือ

ค้นหาซอร์สโค้ดของพวกเขา

  1. เปิด chrome://extensions
  2. เปิดใช้งาน "โหมดนักพัฒนาซอฟต์แวร์" ที่มุมบนขวา
  3. ตอนนี้คุณสามารถเปิดได้background.htmlสำหรับทุกส่วนขยาย
  4. Ctrl + F พิมพ์ "chrome.tabs" เพื่อค้นหาจุดรหัสที่น่าสงสัย
  5. ให้ข้อเสนอแนะกับผู้สร้างส่วนขยาย

8
Nice หนึ่ง :) คือ 'Measureit!' สำหรับฉัน ..
เอ็ดดี้

7

คุณไม่สามารถใช้chrome.tabsในสคริปต์เนื้อหา อ้างอิงถึงเอกสาร ,

... สคริปต์เนื้อหามีข้อ จำกัด บางประการ พวกเขาไม่สามารถ:

  • ใช้ chrome. * API (ยกเว้นบางส่วนของ chrome.extension)
  • ใช้ตัวแปรหรือฟังก์ชั่นที่กำหนดโดยหน้าส่วนขยาย
  • ใช้ตัวแปรหรือฟังก์ชั่นที่กำหนดโดยหน้าเว็บหรือสคริปต์เนื้อหาอื่น ๆ

ดังนั้นคุณสามารถใช้chrome.tabsAPI ได้เฉพาะในหน้าพื้นหลังหรือหน้าส่วนขยายอื่น ๆ คุณสามารถใช้ข้อความนามสกุลผ่านchrome.tabsไปขอให้ใช้พื้นหลังหน้า


ฉันไม่ได้รับสิ่งที่ใช้ chrome.tabs เป็นส่วนเสริม Chrome ของฉันหรือไม่
8k_of_power

3
ใช่ข้อผิดพลาดนี้สามารถส่งได้โดยส่วนขยาย Chrome เท่านั้น (จนถึงตอนนี้)

5
สำหรับฉันมันเป็น MeasureIt! ทำให้เกิดข้อผิดพลาด
Justin Bull

@weng หากคุณยังคงได้รับข้อผิดพลาดลองปิดการใช้งานส่วนขยายในกลุ่มและดูว่าข้อผิดพลาดจะถูกลบออก

MeasureIt! ยังทำให้เกิดข้อผิดพลาดนี้สำหรับ ไม่สามารถที่จะตรวจแก้จุดบกพร่องของรหัสของคนอื่นดังนั้นตอนนี้ฉันเพิ่งทำมันต่อไป

1

สิ่งนี้เกิดจากส่วนขยายโดยใช้chrome.tabsสิทธิ์ แต่ไม่ได้ระบุว่าทำเช่นนั้นในmanifest.jsonชุดที่มีส่วนขยาย เคล็ดลับไม่เพียง แต่ค้นหาส่วนขยายที่ใช้chrome.tabsแต่เพื่อค้นหาส่วนขยายที่ทำได้โดยไม่ต้องประกาศ

เริ่มต้นด้วยวิธีการอัตโนมัติมากขึ้น (คำสั่งหลายบรรทัดสำหรับการอ่าน): On * nix:

$ find . -type f \
> | xargs grep -l chrome.tabs \
> | cut -d '/' -f 2 \
> | uniq

บน Windows โดยใช้ PowerShell:

> gci -rec |? {-not $_.PSIsContainer} `
>> | sls 'chrome.tabs' `
>> | select -Unique Path `
>> |% {$_.Path.Split('\')[10] } `
>> | select -Unique
>>

จากนั้นไปที่chrome://extensionsแท็บเพื่อให้ตรงกับไดเรกทอรีในผลการค้นหาในชื่อนามสกุลและคลิกสิทธิ์ของแต่ละคนเพื่อดูว่าใครจะไม่ copping chrome.tabsการใช้งานของพวกเขา โปรดทราบว่าในบรรทัดที่ 4 ของตัวอย่าง PowerShell ฉันจะจัดทำดัชนี '10' เพราะนั่นคือจำนวนองค์ประกอบของเส้นทางที่มีจากC:\ไปยังExtensionsไดเรกทอรี มันอาจแตกต่างกันในระบบของคุณ

ในกรณีของฉันฉันทำการค้นหาแบบอัตโนมัติโดยการตรึงส่วนอีกสองสามส่วนลงในท่อ:

$ find . type f \
> | xargs grep -l chrome.tabs \
> | cut -d '/' -f 2 \
> | uniq \
> | xargs -I % find % -name 'manifest.json' \
> | xargs grep -L tabs
hipbfijinpcgfogaopmgehiegacbhmob/16.0.544_0/manifest.json
hipbfijinpcgfogaopmgehiegacbhmob/17.1_0/manifest.json
hipbfijinpcgfogaopmgehiegacbhmob/18.1_0/manifest.json

ตอนนี้มองในchrome://extensions:

ป้อนคำอธิบายรูปภาพที่นี่

ถูกจับ

ป้อนคำอธิบายรูปภาพที่นี่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.