【问题标题】:web notification ( javascript )网络通知(javascript)
【发布时间】:2018-01-13 19:09:25
【问题描述】:

Q1:如何停止间隔 let intervalId = setInterval(function(){ document.title = document.title == msg ? oldTitle : msg}, 1000);

然后返回原标签标题? 我试试

if (window.focus()) { clearInterval(intervalId); } 但这不起作用?

Q2 : 如何聚焦窗口中的特定标签,我除了window.focus()还能用什么

Q3 : 在新窗口中打开链接,如果已经打开,则关注它 注意:window.open('').focus() 总是打开新标签,即使已经打开了一个

请提前指教,非常感谢您

【问题讨论】:

  • 你的问题很不清楚。你能提供一些关于你试图用这些做什么的背景吗?
  • 味精? oldTitle : msg,要么是假的,要么是 oldTitle...
  • 不,您不能强迫用户返回您的网站,这是用户的决定。查看通知部分的服务人员。

标签: javascript push-notification notifications cross-browser


【解决方案1】:

所以我假设您想在用户不在窗口中时来回切换不同的标题,然后在用户回来时设置为原始窗口。

对于Q1,我认为你应该听模糊和焦点事件来实现功能。

let intervalId = null;
let original = 'original title';
let newMsg = 'new message';
// clear the timer when the user comes back
window.addEventListener('focus', function() {
  clearInterval(intervalId);
}, false);

// set the timer when the user goes away
window.addEventListener('blur', function() {
  intervalId = setInterval(function() {
    document.title = document.title === original ? newMsg : original;
  }, 1000)
}, false);

`

第二季度,引用MDN

由于用户设置可能会失败,并且在此方法返回之前不能保证窗口位于最前面。

对于Q3,window.open() 也接受windowName 参数,当你打开窗口时你应该给open() 方法赋予相同的窗口名称,这样当同一个窗口打开时,它可以被聚焦.

window.open('url','windowName').focus()

这是一个例子:

window.open('https://www.google.com', 'google-window').focus()

【讨论】:

  • 谢谢 Q1 正常工作 Q2:我不明白这句话,请你澄清一下 Q3:我试了一下,但缺少一些东西,请你举个例子
  • Q2:这意味着您不能强迫用户专注于特定标签,这取决于浏览器的行为或用户的设置。
  • 谢谢你说的更清楚了,请问第3题可以举个例子吗?
  • 最后添加的例子
  • 这在打开然后对焦的情况下可以正常工作,但是如果未打开,此解决方案无法对焦,请咨询
猜你喜欢
  • 1970-01-01
  • 2019-12-03
  • 2019-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多