嗨我从chrome应用程序的js中的函数内部调用chrome.notifications.create时出错。可以在函数外部使用,但在函数内部时我会收到以下错误:“未捕获的TypeError:无法读取未定义的属性'create'”
以下是代码:
document.addEventListener('DOMContentLoaded', function () {
document.getElementById('submit').addEventListener('click', submit);
});
function submit() {
var options = {
type:"basic",
title:"nameVal",
message:"msgVal",
iconUrl:"icon.png",
};
//notification options set
chrome.notifications.create(options,callback);
//notification set
}
function callback() {
console.log("Notification succesfull");
//notification confirmed
}
谢谢,对于js和Chrome应用程序,我是一个菜鸟,所以任何帮助都表示赞赏:)
答案 0 :(得分:17)
有两种可能的原因。
您正尝试使用content script中的此功能。您不能:内容脚本在他们可以调用的Chrome API中非常有限。
但是,内容脚本有一些限制。他们不能:
使用chrome。* API,但以下情况除外:
extension
(getURL
,inIncognitoContext
,lastError
,onRequest
,sendRequest
)
i18n
runtime
(connect
,getManifest
,getURL
,id
,onConnect
,onMessage
,sendMessage
)
storage
在这种情况下,您需要将此调用委托给后台脚本:来自内容脚本的send a message,在后台脚本中获取并执行操作。
您正尝试从扩展程序脚本中调用它,但未声明"notifications"
权限。
在这种情况下,修复很简单 - 只需添加权限。
答案 1 :(得分:9)
您是否已将chrome通知权限添加到manifest.json?
添加 class AutomotiveManager
{
private bool isBeingTested
{
set
{
isBeingTested= false;
}
}
private dialogResult MessageBoxResult
{
///need help over here
}
}
权限处理您的扩展程序中加载的内容和未加载内容,以及您还可以访问的内容。
答案 2 :(得分:0)
当我使用chrome.notifications时,我有一个关于这个未定义问题的案例。
<p>hello world</p>
<p>hello world</p>
<p>hello world</p>
<p>hello world</p>
但我的&#39; icon_86.png&#39;不在图像文件夹中。
解决方案:当我使用正确的iconUrl时,它会没问题。
(&#39; icon_86.png&#39;,它位于我的项目根目录中)