Javascript 在web应用中注册内联服务工作人员
我正在尝试将web推送通知添加到使用应用程序脚本托管的web应用程序中。为此,我需要注册一个服务工作者,我遇到了一个跨域请求错误。原始内容由Javascript 在web应用中注册内联服务工作人员,javascript,google-apps-script,service-worker,web-notifications,Javascript,Google Apps Script,Service Worker,Web Notifications,我正在尝试将web推送通知添加到使用应用程序脚本托管的web应用程序中。为此,我需要注册一个服务工作者,我遇到了一个跨域请求错误。原始内容由*.googleusercontent.com托管,而脚本URL为script.google.com/* 我能够成功地创建一个内联工作程序,使用脚本创建从blob创建的内联URL。现在我被困在浏览器中注册工作人员的问题上 以下模型有效: HTML 服务人员 self.onmessage=函数(e){ self.postMessage('msg from
*.googleusercontent.com
托管,而脚本URL为script.google.com/*
我能够成功地创建一个内联工作程序,使用脚本创建从blob
创建的内联URL。现在我被困在浏览器中注册工作人员的问题上
以下模型有效:
HTML
服务人员
self.onmessage=函数(e){
self.postMessage('msg from worker');
};
log(“[Service Worker]进程已启动”);
})
在线安装
函数日志(msg){
var fragment=document.createDocumentFragment();
appendChild(document.createTextNode(msg));
fragment.appendChild(document.createElement('br'));
document.querySelector(“#log”).appendChild(片段);
}
//使用脚本创建对象
var blob=新blob([document.querySelector(“#worker”).textContent]);
//为obejct分配一个绝对URL以进行托管
var-worker=new-worker(window.URL.createObjectURL(blob));
worker.onmessage=函数(e){
日志(“收到:+e.数据”);
}
worker.postMessage('start');
//navigator.serviceWorker.register(工作者)此行失败
navigator.serviceWorker.register(worker)
返回400:错误的HTTP响应代码
错误
可以安装内联工人吗?或者所有安装的工作人员都必须来自外部脚本吗?值得注意的是,与推送通知一起使用的Web工作人员和服务工作人员是不同的(请参阅) 根据MDN服务人员的说法。在Google Apps脚本中,您可以为服务人员文件提供以下内容:
function doGet(e) {
var file = e.parameter.file;
if (file == 'service-worker.js'){
return ContentService.createTextOutput(HtmlService.createHtmlOutputFromFile('service-worker.js').getContent())
.setMimeType(ContentService.MimeType.JAVASCRIPT);
} else {
return HtmlService.createHtmlOutputFromFile('index');
}
}
但与()一样,由于web应用的服务方式,您将遇到以下错误:
SecurityError:注册ServiceWorker失败:脚本资源位于不允许的重定向后面
有一个版本,但仍在草稿中。值得注意的是,与推送通知一起使用的Web工作人员和服务工作人员是不同的(请参阅) 根据MDN服务人员的说法。在Google Apps脚本中,您可以为服务人员文件提供以下内容:
function doGet(e) {
var file = e.parameter.file;
if (file == 'service-worker.js'){
return ContentService.createTextOutput(HtmlService.createHtmlOutputFromFile('service-worker.js').getContent())
.setMimeType(ContentService.MimeType.JAVASCRIPT);
} else {
return HtmlService.createHtmlOutputFromFile('index');
}
}
但与()一样,由于web应用的服务方式,您将遇到以下错误:
SecurityError:注册ServiceWorker失败:脚本资源位于不允许的重定向后面
曾经有过一次,但仍在起草中。关于国外取货,最近从服务人员那里删除了。请参阅和About Foreign Fetch上的相关问题,它最近已从服务人员中删除。请参阅和上的相关问题