草庐IT

javascript - 为什么 "window = window.parent;"会造成无限循环?

我正在遍历一个框架层次结构,并尝试了以下方法来找到顶层框架:varwin=window;while(win.parent){//performactionsonwinwin=win.parent;}到目前为止,我知道正确的循环条件必须是:while(win!==top){win.parent的存在性检查似乎创建了一个无限循环。有什么特别的原因吗?为什么top应该有父级? 最佳答案 您还应该检查window.parent==window是否为false。否则你将陷入无限循环。如果没有父级,则父级属性将引用自身(无限循环)。varwin

javascript - 为什么 window.addEventListener 不起作用?

这个问题在这里已经有了答案:varfunctionName=function(){}vsfunctionfunctionName(){}(41个回答)关闭9年前。在window.onload事件中,我想要调用一个函数。如果我如下定义它,则不会调用该函数。try{window.addEventListener("load",initialiseTable,false);}catch(e){window.onload=initialiseTable;}varinitialiseTable=function(){console.log("helloworld!!");};但如果我将函数声明更

javascript - 检查它是否是窗口对象

鉴于我的插件可以在任何JS引擎上运行(无论是否在浏览器中),如何知道某个变量实际上是浏览器window对象。比如我怎么知道someVar引用浏览器window目的。window里面有什么东西吗我可以检查它是否真的是浏览器window对象?以及如何检查浏览器是否为window对象确实存在,而不仅仅是一些window包含对象的变量。假设你不知道someVar是window单独使用,并且您想将其与真实浏览器匹配window像someVar===window这样的对象,你怎么得到window你确定是浏览器window而不是来自名为window的外部范围的其他对象,还是来自另一个环境的其他全局变

javascript - 我应该使用 IIFE 还是 window onload 来初始化?

以下两个代码片段都有效:在js文件中使用IIFE:(functioninitialize(){txtInput=document.getElementById('txtInput');txtResult=document.getElementById('txtResult');txtInput.value="0";txtResult.value="0";}());在html文件中的窗口加载事件上调用initialize():window.addEventListener('load',initialize,false);是一种比另一种更好的方法吗?在性能方面还是其他方面?就目前而言,我

javascript - Uncaught Error : [$injector:unpr] Unknown provider Ionic Framework/AngularJS

在localstoragetutorialontheIonicblog之后,我试图在我的Ionic应用程序运行时设置/获取localStorage值,但我收到错误消息:UncaughtError:[$injector:unpr]Unknownprovider:$localstorageProvider我的app.js代码:angular.module('starter',['ionic','starter.controllers','starter.services']).run(function($ionicPlatform,$localstorage){$ionicPlatform

javascript - 使用 window.scrollBy 平滑滚动

我正在尝试使用setInterval()和window.scrollBy()平滑地滚动页面我会使用jQuery的animate函数,但动画需要连续且无限循环(页面内容将是无限的)。这个想法相当简单:varx=1;vary=1;setInterval(function(){window.scrollBy(0,x);},y);如何在不使动画显得跳动的情况下提高滚动速度?我遇到了两个问题:setInterval()不能采用小于1的Y值(或者可能接近30,具体取决于浏览器限制)增加X的值会导致动画跳动(由于像素被完全跳过)这里有一个fiddle可以用来做实验:http://jsfiddle.n

javascript - 如何设置浏览器视口(viewport)大小

我正在尝试创建一个跨浏览器的Python-Selenium测试脚本。因此,无论我使用哪种webdriver(Chrome或IE),我都需要所有结果都相同。我可以按如下方式设置浏览器窗口大小:driver.set_window_size(1920,1080)但是下面的代码将为Chrome和IE返回不同的值:element=driver.find_element_by_xpath('some_xpath')element.location视口(viewport)区域(显示网页内容的地方)大小不同(Chrome-1910x998,IE-1904x965)尽管窗口大小相同。为了获得这些值,我使

Javascript - 检测窗口是否处于非事件状态但仍然可见

Anumberofotheranswers已经介绍了正在运行的Javascript脚本如何判断其当前窗口是否处于事件状态。然而,这是一组非常有限的选择,并且不区分(例如)一个最小化的窗口一个不活动的标签一个被其他程序的float窗口部分遮挡的float窗口一个选项卡在一个显示器上全屏显示,而用户在另一台显示器上的另一个窗口中执行操作。所有这些都算作不活动,尽管在​​后两种情况下网页对用户仍然可见。虽然有证据表明thismaybetechnicallyimpossiblegivenhowwebbrowsersandboxeswork,我仍然希望能够检测到上述内容之间的差异。例如,为(1)

Javascript 全局对象

我经常看到在javascript代码中定义一个全局对象作为命名空间。varMyNS={a:function(){},...};但有时,我看到人们省略了“var”关键字,例如MyNS={a:function(){},...};我相信在Web浏览器中,如果您不使用var定义变量,它会被放在window对象中,它充当全局命名空间。由于它通过不使用“var”节省了几个字节的文本,是否有理由使用关键字用于此特定目的? 最佳答案 Sinceitsavesafewbytesoftextbynotusing"var"isthereareasonto

javascript - window.opener 在弹出窗口中重定向后无用 (JavaScript)

我正在构建一个涉及通过第三方进行身份验证的应用程序。为了使进程不重定向实际的应用程序,我打开一个新窗口,然后进行身份验证并在成功后返回主窗口。然而,这并没有按计划进行。当弹出窗口重定向到第三方并返回时,window.opener获取null。仍然可以通过window.close()关闭弹出窗口,但我还需要刷新主窗口中的登录区域,如下所示:window.opener.check_auth_status();我真的希望有办法解决这个问题,例如将函数绑定(bind)到主窗口中的弹出关闭?刷新整个页面是非常不必要的。一种方法是setanintervaltomainwindow检查弹出窗口是否关