草庐IT

WINDOW_SERVICE

全部标签

javascript - document.defaultView.getComputedStyle 和 window.getComputedStyle 有什么区别

获取元素的样式时,我们总是使用if(document.defaultView&&document.defaultView.getComputedStyle)检查浏览器是否支持该方法。为什么不使用if(window.getComputedStyle)? 最佳答案 简而言之,我们使用document.defaultView&&document.defaultView.getComputedStyle的原因是我们想要一种跨浏览器处理每个元素的方法,在它支持获取时进行检查计算样式。对于Firefox3.6中的iframe,简单的if(win

javascript - 为什么调用 Window.scroll() 会产生可信事件?

我有一个Chrome扩展程序需要产生类似人类的鼠标和键盘行为(具体来说,生成具有isTrusted值true的事件)。除了使用chrome.debuggerAPI滚动之外,我可以做我需要的一切。但对于Chrome52和Firefox48.0a1而言,Window.scroll()方法似乎足以满足此目的。这可以通过将事件监听器附加到页面来观察,如下所示:document.addEventListener("scroll",function(event){console.log("eventtrusted?"+event.isTrusted);});然后在开发人员控制台中运行类似windo

javascript - Service Worker(或类似的东西)中的长时间运行的进程

我有一个使用IndexedDB存储其状态的客户端JS应用程序。工作正常。但是,它有点慢,因为我经常读取和写入IndexedDB,以便在打开多个选项卡时状态不会变得不一致。我的想法是...将所有数据库访问内容放入ServiceWorker中,然后我可以将值缓存在内存中,而不必担心另一个选项卡可能会更改数据库。这似乎工作正常,除了我的应用程序的某些部分需要很长时间才能运行。我可以将ServiceWorker的状态(比如“X%完成”)传达给我的UI。但是如果运行时间超过30秒,Firefox和Chrome似乎都会杀死worker,这对我来说太短了。有什么办法可以绕过这个限制吗?如果没有,有什

javascript - 为什么在使用相同的 location.href(或空)推送时 window.onpopstate 上的 event.state 为空

在不更改URL的情况下推送到历史记录并设置数据时:window.history.pushState({stateName:"myStateName",randomData:window.Math.random()},"myStateName",location.href);....然后监听弹出事件并通过按下浏览器中的返回按钮触发它:window.onpopstate=function(event){console.log(event.state);//logsnull}大多数时候你会得到null作为状态值而不是:{stateName:"myStateName",randomData:0

javascript - window.onbeforeunload 在页面刷新时执行,而不是在页面关闭时执行

我正在使用window.onbeforeunload在发生关闭事件时弹出确认对话框,但确认对话框出现在页面刷新时,不会在页面关闭时执行。这是JavaScript代码:window.onbeforeunload=confirmWinClose();functionconfirmWinClose(){varconfirmClose=confirm('Close?');returnconfirmClose;}我在Chrome、Firefox和InternetExplorer上试过了。 最佳答案 您的代码有问题:该函数将在您刷新时被调用,因

javascript - Service Worker 获取事件永远不会触发

问题标题说明了一切。if('serviceWorker'innavigator){navigator.serviceWorker.register('/react-redux/sw.js').then(()=>{console.log('registered');},err=>console.log(err));}编辑看来问题的根源是路径navigator.serviceWorker.register('/react-redux/sw.js')如果我移动sw代码,那么我就有了navigator.serviceWorker.register('swRoot.js').then(()=>{

javascript - window.opener 可靠吗?

JavaScript的window.opener属性是否可以跨浏览器可靠地使用,并且不受任何安全设置和任何类型的限制的影响?打开器和打开的窗口都在同一个域中。有没有人遇到麻烦,在某些情况下使用它有不好的经历?我问这个问题是因为我打算构建一个严重依赖它并且应该支持尽可能多的平台的工具。 最佳答案 我现在是两个广泛使用window.opener的网站的开发人员,我不知道什么时候它让我失望了。这些应用程序在IE[678]、Firefox和Webkit上进行了测试;我非正式地使用过Opera,也没有注意到那里有问题。现在,“开启者”关系本质

javascript - attachEvent/addEventListener 到 Window onload/load - 首选方式

我有一个在页面加载时启动的脚本,我一直在使用下面的代码启动它:if(window.addEventListener){window.addEventListener('load',otherRelatedParts,false);}elseif(window.attachEvent){window.attachEvent('onload',otherRelatedParts);}但今天我尝试使用这样的自调用函数:(function(){otherRelatedParts();}())它似乎在所有浏览器中都有效,而且代码更少。这是将事件添加到窗口加载的首选方式吗?

javascript - 是否可以用自定义函数覆盖 window.location 函数?

是否可以禁用或更好地替换为自定义函数window.location?这个问题是相关的:Disableabuilt-infunctioninjavascript(alert)虽然它适用于window.alert,但不适用于window.location。我们希望能够找到一种方法来替换或禁用(替换将是理想的,这样我们就可以使用AJAX记录)window.location...肮脏的广告商有时会使用它从我们的网络属性(property)中窃取人们。有什么想法吗?即使是只适用于少数特定浏览器的东西也可以,因为一旦被捕获(通过AJAX日志记录)我们就可以相当快地对此采取行动。

javascript - 如何在单元测试中将商店注入(inject) Ember.Service?

在我的应用程序中,我有这个初始化程序,它将商店注入(inject)所有服务:exportfunctioninitialize(container,application){application.inject('service','store','store:main');}exportdefault{name:'inject-store-in-services',initialize:initialize};我的问题是,当我运行单元测试时,服务没有store属性。所以我的问题是:有没有办法在单元测试上下文中实现我的初始化程序的功能? 最佳答案