Siv*_*lan 3 javascript push-notification onesignal
Hai我想将推送通知发送到浏览器.所以我使用了信号.
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");
});
});
Run Code Online (Sandbox Code Playgroud)
但是我得到了Uncaught TypeError:OneSignal.once不是一个函数.如果有人知道,请帮助我.
你需要用OneSignal.push(function() { ... })以下方式打电话:
OneSignal.push(function() {
/* ... */
});
Run Code Online (Sandbox Code Playgroud)
此外,OneSignal.once('init')不是有效的事件.在支持的事件在这里描述.
OneSignal SDK在您的页面上异步加载,例如:
<script src="https://cdn.onesignal.com/sdks/OneSignalSDK.js" async"></script>
Run Code Online (Sandbox Code Playgroud)
基本上,没有async属性的脚本在获取和执行页面时会停止加载页面的其余部分,但async脚本允许加载页面的其余部分,同时最终获取并执行该页面.这给依赖于OneSignal现有页面脚本的页面脚本带来了问题.如果OneSignal变量尚不存在,如何OneSignal使用?
大多数OneSignal代码示例都以:
var OneSignal = window.OneSignal || [];
Run Code Online (Sandbox Code Playgroud)
这说:创建一个OneSignal变量,如果加载OneSignal已经将它分配给加载的实例,否则让OneSignal等于空数组[].
所有数组都有一个.push()函数,所以在这一点上,OneSignal变量只是我们正在推动它的一系列函数.
当SDK最终加载时,SDK会处理到目前为止推送的所有函数并重新定义.push().