สำหรับ LibNotify ไฟล์ JSON ที่ติดตั้งมี ID ส่วนขยายที่ไม่ถูกต้อง การอัพเดต ID ส่วนขยายให้ถูกต้องจะแก้ไขได้
ไปที่.config/google-chrome/NativeMessagingHosts
(สำหรับ Google Chrome) หรือ.config/chromium/NativeMessagingHosts
(สำหรับ Chromium) เปิดไฟล์ JSON ในโฟลเดอร์และแจ้งให้ทราบว่าในallowed_origins
ส่วนที่จะช่วยให้ gphchdpdmccpjmpiilaabhpdfogeiphf
ID อย่างไรก็ตาม ID ส่วนขยาย (อย่างน้อยในกรณีของฉัน แต่มันควรจะเหมือนกันสำหรับทุกคน) epckjefillidgmfmclhcbaembhpdeijg
เป็นจริง
ในการแก้ไขปัญหานี้ให้แทนที่ ID ส่วนขยายที่ไม่ถูกต้องด้วยรหัสที่ถูกต้องหรือเพิ่มเครื่องหมายจุลภาคและรหัสส่วนขยายที่ถูกต้องหลังจากนั้น ฉันเลือกตัวเลือกหลังส่วนตัวและนี่คือลักษณะของไฟล์ JSON ของฉัน:
{
"name": "com.initiated.chrome_libnotify_notifications",
"description": "Libnotify Notifications in Chrome",
"path": path to the location of install.sh,
"type": "stdio",
"allowed_origins": [
"chrome-extension://gphchdpdmccpjmpiilaabhpdfogeiphf/",
"chrome-extension://epckjefillidgmfmclhcbaembhpdeijg/"
]
}
แก้ไข: นั่นไม่ใช่การเปลี่ยนแปลงเพียงอย่างเดียวที่จำเป็นต้องทำ ส่วนขยายนี้ขึ้นอยู่กับการแจ้งเตือนของ Webkit ซึ่งเลิกใช้และลบออกใน Chrome (ium) และเบราว์เซอร์อื่น ๆ ที่น่าจะสนับสนุน HTML5 ได้ ดังนั้นจึงgoogle-chrome/default/Extensions/epckjefillidgmfmclhcbaembhpdeijg/1.0_0/notify_hook.js
ต้องมีการอัพเดท ฉันได้เขียนสคริปต์สั้น ๆ สำหรับสิ่งนี้ แต่มันก็ทำลายมาตรฐานส่วนใหญ่ยกเว้นการแสดงการแจ้งเตือน แทนที่ทุกอย่างในไฟล์ด้วยสิ่งต่อไปนี้ (เพิ่มการสนับสนุนขั้นพื้นฐานสำหรับไซต์ที่ยังคงใช้งานอยู่window.webkitNotifications
และ (หวังว่า) การสนับสนุนภาพที่ได้รับการปรับปรุง) (เพิ่มการรองรับการอนุญาต):
OriginalNotification = Notification
Notification = function(title, properties) {
if (Notification.permission != "granted") {
if (this.onError) {
this.onError();
}
return;
}
if (!properties.hasOwnProperty("body")) {
properties["body"] = "";
}
if (!properties.hasOwnProperty("icon")) {
properties["icon"] = "";
}
if (properties["icon"]) {
properties["icon"] = getBaseURL() + properties["icon"];
}
document.getElementById('libnotify-notifications-transfer-dom-area').innerText = JSON.stringify({title:title, body:properties["body"], iconUrl:properties["icon"]});
var event = document.createEvent("UIEvents");
event.initUIEvent("change", true, true);
document.getElementById('libnotify-notifications-transfer-dom-area').dispatchEvent(event);
if (this.onShow) {
this.onShow();
}
};
Object.defineProperty(Notification, "permission", {
get: function() {
return OriginalNotification.permission;
},
set: undefined
});
Notification.requestPermission = function(callback) {
OriginalNotification.requestPermission(callback);
}
window.webkitNotifications = {}
window.webkitNotifications.checkPermission = function() {
return 0;
}
window.webkitNotifications.createNotification = function(image, title, body) {
if (image) {
image = getBaseURL() + image;
}
document.getElementById('libnotify-notifications-transfer-dom-area').innerText = JSON.stringify({title:title, body:body, iconUrl:image});
var event = document.createEvent("UIEvents");
event.initUIEvent("change", true, true);
document.getElementById('libnotify-notifications-transfer-dom-area').dispatchEvent(event);
}
function getBaseURL() {
return location.protocol + "//" + location.hostname +
(location.port && ":" + location.port) + "/";
}
chrome://flags/#enable-native-notifications
มันสามารถใช้ได้ผ่านทาง