คำถามนี้เก่ามาก แต่ก็ยังเป็นผลลัพธ์อันดับต้น ๆ ของ google เมื่อคุณค้นหาวิธีปิดการใช้งานข้อความป๊อปอัพนี้ในฐานะนักพัฒนาส่วนขยายที่ยังไม่ได้เพิ่มส่วนขยายไปยังที่จัดเก็บ Chrome ไม่สามารถเข้าถึงนโยบายกลุ่มได้ สู่ระบบปฏิบัติการของพวกเขาและไม่ได้ใช้การสร้าง chrome dev ขณะนี้ไม่มีวิธีแก้ปัญหาอย่างเป็นทางการในกรณีนี้ดังนั้นฉันจะโพสต์ข้อความที่ค่อนข้าง 'แฮ็ค' ที่นี่
วิธีนี้ทำให้เราสร้างหน้าต่างใหม่ทันทีและปิดหน้าต่างเก่า หน้าต่างป๊อปอัปเกี่ยวข้องกับหน้าต่างเดิมดังนั้นในกรณีการใช้งานปกติป๊อปอัพจะไม่ปรากฏขึ้นเนื่องจากหน้าต่างนั้นปิด
ทางออกที่ง่ายที่สุดที่นี่คือเราสร้างหน้าต่างใหม่และเราปิดหน้าต่างทั้งหมดที่ไม่ใช่หน้าต่างที่เราเพิ่งสร้างขึ้นในการติดต่อกลับ:
chrome.windows.create({
type: 'normal',
focused: true,
state: 'maximized'
}, function(window) {
chrome.windows.getAll(function(windows) {
for (var i = 0; i < windows.length; i++) {
if (windows[i].id != window.id) {
chrome.windows.remove(windows[i].id);
}
}
});
});
นอกจากนี้เราสามารถตรวจพบว่ามีการติดตั้งส่วนขยายนี้อย่างไรและเรียกใช้รหัสนี้เฉพาะเมื่อเป็นการติดตั้งเพื่อการพัฒนา (แม้ว่าอาจเป็นการดีที่สุดที่จะลบทั้งหมดออกจากรหัสการเปิดตัว) ก่อนอื่นเราสร้างฟังก์ชั่นการโทรกลับสำหรับการโทร chrome.management.getSelf ซึ่งช่วยให้เราสามารถตรวจสอบประเภทการติดตั้งของส่วนขยายได้
function suppress_dev_warning(info) {
if (info.installType == "development") {
chrome.windows.create({
type: 'normal',
focused: true,
state: 'maximized'
}, function(window) {
chrome.windows.getAll(function(windows) {
for (var i = 0; i < windows.length; i++) {
if (windows[i].id != window.id) {
chrome.windows.remove(windows[i].id);
}
}
});
});
}
}
ต่อไปเราจะเรียก chrome.management.getSelf ด้วยการติดต่อกลับที่เราทำ:
chrome.management.getSelf(suppress_dev_warning);
วิธีนี้มีข้อแม้บางประการกล่าวคือเรากำลังสมมติหน้าพื้นหลังแบบถาวรซึ่งหมายความว่าโค้ดจะทำงานเพียงครั้งเดียวเมื่อเปิด Chrome ครั้งแรก ปัญหาที่สองคือถ้าเราโหลด / รีเฟรชส่วนขยายจากหน้า chrome: // extensions มันจะปิดหน้าต่างทั้งหมดที่เปิดอยู่และในประสบการณ์ของฉันบางครั้งก็แสดงคำเตือนต่อไป กรณีพิเศษนี้สามารถหลีกเลี่ยงได้โดยการตรวจสอบว่ามีแท็บใดที่เปิดให้ "chrome: // Extensions" และไม่ทำงานถ้าเป็นเช่นนั้น