Javascript 未捕获类型错误:OneSignal.once不是函数

Javascript 未捕获类型错误:OneSignal.once不是函数,javascript,push-notification,onesignal,Javascript,Push Notification,Onesignal,我想向浏览器发送推送通知。所以我用了一个信号 var OneSignal = OneSignal || []; OneSignal.push(["init", { appId : "xxxxxxx", autoRegister : false, /* Set to true to automatically prompt visitors */ subdomainName : "https://foxtaxi.onesignal.

我想向浏览器发送推送通知。所以我用了一个信号

var OneSignal = OneSignal || [];
OneSignal.push(["init", {
    appId           :   "xxxxxxx",
    autoRegister    :   false, /* Set to true to automatically prompt visitors */
    subdomainName   :   "https://foxtaxi.onesignal.com",
    notifyButton    :   {
        enable: true /* Set to false to hide */
    }
}]);

OneSignal.push(function() {
    OneSignal.once("init", function(event) {
        alert("hhh");
    });
 });
但是我得到了未捕获的类型错误:OneSignal.once不是函数。如果有人知道,请帮助我。

解决方案 您需要使用
OneSignal.push(function(){…})
包装您的调用:


另外,
OneSignal.once('init')
不是有效的事件。这个

解释 OneSignal SDK在您的页面上异步加载,例如:

<script src="https://cdn.onesignal.com/sdks/OneSignalSDK.js" async"></script>
这表示:创建一个OneSignal变量,如果OneSignal已经加载,则将其分配给加载的实例,否则让OneSignal等于空数组
[]

所有数组都有一个,所以在这一点上,OneSignal变量只是一个函数数组


当SDK最终加载时,SDK将自动启动。

Hi jason。谢谢你的回答。现在我没有得到那个控制台错误。但是,当我在init函数上设置警报时,我没有收到警报消息。我已更改代码以供参考。
<script src="https://cdn.onesignal.com/sdks/OneSignalSDK.js" async"></script>
var OneSignal = window.OneSignal || [];
OneSignal.push(function() {
    OneSignal.once("init", function(event) {
        // This callback fires only once when the event occurs, and does not refire
    });
});