试图创建一个谷歌通知,未捕获TypeError错误

时间:2013-09-10 08:05:26

标签: javascript google-chrome google-chrome-extension

我正在尝试使用新的Chrome通知,没有什么花哨的只是尝试一个基本的工作,但我一直在

未捕获的TypeError:无法调用未定义的方法'create'

我认为它显而易见但我不确定我做错了什么,有人有什么想法吗?

提前致谢

的Javascript

var id= 0;

var opt={
type:"basic",
title:"Hello",
message:"world",
iconUrl:"Google.png"
}


function creationCallback(id) {
console.log("Succesfully created " + id + " notification");
}


function createnot()
{

chrome.notifications.create(id, opt, creationCallback);
id++;
}

清单

{
    "name": "Notification API Sample",
    "description": "Tests the notification API",
    "manifest_version" : 2,
    "version" : "0.1",

    "permissions" : [
    "notifications"
    ]
}

HTML     

<html>
<head>
 <script type="text/javascript" src="note.js"></script>
 <link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>
 <input type="button" value="meh" onclick="createnot()"/>
 <footer>
 </footer>
</body>
</html>

1 个答案:

答案 0 :(得分:2)

{
    "name": "Notification API Sample",
    "description": "Tests the notification API",
    "manifest_version" : 2,
    "version" : "0.1",

    "permissions" : [
    "notifications",
    "http://*/*" // add this if your html file is a webpage not a page in extension.

    ],

    "background": {
        "scripts": ["background.js"],
        "persistent": false // add this line if you use event page.
    }

}

你的manifest.json需要像这样的“背景”信息。

另外,如果你的html页面是一个网页而不是扩展页面本身, 你需要给它一个许可。

var id = "0";

它可能没什么区别但是,我认为通知ID需要是一个字符串。

chrome.notifications.create(string notificationId, NotificationOptions options, function callback)

<强> +++ +++已编辑

foo.js

$(function(){

var test = $("#test");

test.click(function () {


    chrome.notifications.create(
        'id1',{   
            type:"basic",
            title:"Hello",
            message:"world",
            iconUrl:"Google.png"
        },

        function() { 

        } 

    );


});

});

foo.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <script src="jquery.js"></script>
    <script src="options.js"></script>
</head>
<body>

    <h1 id="test">This is a test.</h1>

</body>
</html>

<强>的manifest.json

{
    "name": "Notification API Sample",
    "description": "Tests the notification API",
    "manifest_version" : 2,
    "version" : "0.1",

    "permissions" : [
    "notifications"
    ]

}

我认为如果html页面是扩展名,这是最简单的方法。

您需要这些文件。你甚至不需要background.js。

1.manifest.json

2.foo.html

3.foo.js