网站优化中会碰到非常多的问题,没有排名不可怕可怕的是网站没有收录、优化没有效果; 因为出现这样的问题导致长时间的优化没有任何意义,所以我们都想搞明白为什么优化一直没有效果。...网站优化一直没有效果该怎么办? 很多SEOer刚开始学习网站优化心血来潮,然后做着做着就感觉到一直没有效果开始对自己学习的知识感到质疑。...然后就没兴趣了然而发现网站优化没有效果就不想坚持了,这其中一部分是自制力不足的问题;另一部分是因为心态的原因。...因为好多做黑帽的人并没有耐心,长期的坚持使我们脱颖而出。 所以我们要有一个好的心态,SEO优化没有效果不可怕可怕的是失去做下去的毅力。 对于SEO优化这件事与其他事实一模一样的要懂得学习新的知识。...SEO优化网站一直没有效果我们应该如何应对的秘诀就是: 1、保持一个端正的心态对待这件事; 2、去学习一些新的知识,去分析他消化他; 3、带着脑子去做事,不要盲目地学习别人做的任何事,要去分析别人做事的思想
网页如何防止刷新重复提交与如何防止后退的解决方法 提交后禁用提交按钮(大部分人都是这样做的) 如果客户提交后,按F5刷新怎么办?...由于浏览器不再缓存这个页面,当用户点击后退按钮时浏览器将重新下载该页面,此时程序就可以检查那个会话变量,看看是否应该允许用户打开这个页面。 ...不过我注意到,如果使用这种方法,虽然用户点击一下后退按钮时他不会看到以前输入数据的页面,但只要点击两次就可以,这可不是我们希望的效果,因为很多时候,固执的用户总是能够找到绕过预防措施的办法。 ...另外一种禁用后退按钮的办法是用客户端JavaScript打开一个没有工具条的窗口,这使得用户很难返回前一页面,但不是不可能。...那么,在那个我们不想让用户返回的页面是否也可以加入JavaScript代码呢?在这个页面中加入的JavaScript代码可用来产生点击前进按钮的效果,这样也就抵消了用户点击后退按钮所产生的动作。
;黑色背景区域显示为覆盖全屏的黑色半透明窗体;右上角有播放关闭按钮,关闭后即关闭整个播放区域和黑色窗体背景;并且要求覆盖浏览器的返回按钮,返回时效果同点击关闭按钮。...当元素之间重叠的时候, z-index 较大的元素会覆盖较小的元素在上层进行显示。...需要注意以下几点: z-index只在当前堆叠的上下文中的层级,不同父元素的子元素之间进行显示时,会根据父级元素的z-index进行渲染; 可以为负值; 必须在position属性为:relative...(实际是单纯使用z-index没有达到预期效果,总有几个东东在飘在页面上方,手动狗头,所以不单纯是告诉大家,也是自己做一下记录) body.append思路 即创建组件时,改变组件的父级节点,直接将组件挂载在最外层的...$el) }, 复制代码 通过上述代码,将该组件与系统现有的复杂层级组件抽离,从而达到置顶显示覆盖的最终效果。给自己点个赞!
注意该方法是在内部使用的页面加载和转换作为一个结果,点击一个链接或提交表单时。跳转外部页面全部没有效果,必须是内部的DIV页面才有效果。...注意的一些页面转换到另一个页面(changepage请求的页和页是不同的),他们可能不会如预期的动画。 changeHash:布尔类型,默认为true。...设置为true时地址栏中的Hash更新会创建一个新的浏览器历史记录的影响。设置为false,传入的页面在浏览器历史替换当前页面,用户导航无法通过浏览器的“后退”按钮回到上一个页面。...跳转页面发送ajax请求的参数。 dataUrl:字符串类型,默认为 undefined。完成页面转换时要更新浏览器地址的URL地址。如不特别指定,则使用页面page元素的data-url属性值。...强制刷新页面, 即使当页面容器中的dom元素已经准备好时,也强制刷新。只在changePage()的to参数是一个可用地址的时候。 reverse:布尔类型,默认false。
栈实现浏览器的前进后退 当你一次访问 1、2、3 页面之后,点击浏览器的后退按钮就可以返回到 2 和 1.当后退到 1,点击前进按钮还可以继续查看页面 2、3。...这里不仅仅作为一个 示例,我的例子还考虑了栈默认初始大小以及最大限制,当超过默认大小但是还没有达到最大限制的时候,还需要扩容操作。...拓容实现 当容量达到指定默认值大小的时候再入栈数据则需要拓容知道拓容到最大限制大小。...浏览器后退前进 我们使用两个栈,X 和 Y,我们把首次浏览的页面依次压入栈 X,当点击后退按钮时,再依次从栈 X 中出栈,并将出栈的数据依次放入栈 Y。...当我们点击前进按钮时,我们依次从栈 Y 中取出数据,放入栈 X 中。当栈 X 中没有数据时,那就说明没有页面可以继续后退浏览了。当栈 Y 中没有数据,那就说明没有页面可以点击前进按钮浏览了。
后退方法history.go(-1)如果无法后退时,会返回一个undefined,利用这一点来判断是否可以后退,不能后退时执行window.close(); if (!...因为火狐浏览器只能关闭通过JS新建的窗口,即有target="_blank"属性的标签,或者window.open("","_blank")方式打开的页面。...兼容性后退或关闭 if (!...= navigator.userAgent; //取得浏览器的userAgent字符串 if (userAgent.indexOf("Firefox") > -1) { return...) > -1) { return "IE"; } } 代码测试于Firefox 54,Chrome 59,Edge 15,Opera 46,Safari 534,IE 11,可达到预期效果
一、界面测试 1、布局是否合理,TextBox和按钮是否对齐 2、TextBox和按钮的长度,高度是否符合要求 3、界面的设计风格是否与UI的设计风格统一 4、界面中的文字简洁易懂,没有错别字 5、默认鼠标焦点定位...(密码文本框上有个眼睛的图标) (14)登录时,当页面刷新或重新输入数据时,验证码是否更新 1)牵扯到验证码的,考虑文字是否扭曲过度导致辨认难度大, 考虑颜色(色盲使用者),刷新或换一个按钮是否好用 2...),验证是否会重新定向到用户登录界面 5、允许登录失败次数(密码错误次数是否有限制) 错误登录次数达到系统配置后,需要对该账号或者该IP进行临时锁定,到达解锁条件后再进行解锁。...6、浏览器前进后退,是否需要重新登录 7、是否可记住密码 (1)登录失败后,不能记录密码的功能 (2)登录成功后,记住的密码,在保存是否加密 ,是否有有效期,过期之后是否会清空密码 8、用户名或密码输入错误的提示语...中是否有个人信息明文打印 四、性能测试 1、单用户登录 (1)响应时间是否小于 3 秒 (2)后台请求数量是否过多 2、高并发场景下 (1)用户登录的响应时间是否小于 5 秒 (2)服务端的监控指标是否符合预期
actualTitle = driver.getTitle(); 比较预期值和实际值 这部分代码只是使用一个基本的Java if-else 结构来比较实际标题和预期标题: if(actualTitle.contentEquals...driver.close(); 终止整个程序 如果你在没有先关闭所有浏览器窗口的情况下使用此命令,你的整个Java程序将在浏览器窗口打开时结束。...()方法时必须注意以下事项: 它不接受任何参数; 如果适用,该方法将自动等待加载新页面; 要选中的元素必须是可见的(高度和宽度不能等于零)。...注意: driver.get() : 它用于访问特定的网站,但它不维护浏览器历史记录和cookie,所以我们不能使用前进和后退按钮;使用get()会跳转到一个新的页面,当有需要前进或后退到需要的页面获取元素时...,无法再对历史页面来回跳转; driver.navigate() : 它用于访问特定的网站,但是它维护浏览器历史记录和cookie,所以我们可以在编写Testcase的过程中使用前进和后退按钮在页面之间导航
关闭当前页面,相信不少人在开发中都遇到过这个需求,但面对这么多的浏览器,要做到js的兼容还需要做特殊的处理。关于这方面网上有很多的资料,但大多都是复制粘贴的,没有达到兼容的效果,或者是效果不好。...//FF中需要修改配置window.close方法才能有作用,为了不需要用户去手动修改,所以用一个空白页面显示并且让后退按钮失效 //Opera浏览器旧版本(小于等于12.16版本)内核是Presto,...window.close方法有作用,但页面不是关闭只是跳转到空白页面,后退按钮有效,也需要特殊处理 var userAgent = navigator.userAgent; if (userAgent.indexOf
太糟糕了,因为单击浏览器的“后退”和“前进”按钮与浏览历史记录中的 URL 导航有关。如果没有 History API,就无法谈论路由。...history.back() 与 history.go(-1) 相同,或者当用户在浏览器中单击 Back 按钮时。你可以用任何一种方法达到相同的效果。...当用户按下浏览器的 Forward 按钮时,将执行 history.forward(),它等效于 history.go(1)”。...这就是使浏览器无需重新加载页面即可更改 URL 的原因。 结果:现在,每次我们单击按钮时,URL 实际上都会在浏览器的地址栏中更改。内容框也会更新。 ? 我们的原生 JS 路由开始运行了。...假定每次你导航到出现在路由按钮上的 URL 时,实际上都会从服务器单独加载该 URL。 因此你有责任确保/page/about 将路由器和页面的加载到应用程序的根视图中。
# 前端路由实现方法 路由需要实现以下功能: 当浏览器地址变化时,切换页面; 点击浏览器【后退】、【前进】按钮时,网页内容跟随变化; 刷新浏览器,网页加载当前路由对应的内容。...,并触发 onhashchange 事件 html 中 标签的属性 href 可以设置为页面的元素 ID 如 #top,当点击链接时页面跳转到该 ID 元素所在区域,同时浏览器自动设置 window.location.hash...,当发生改变时,只会改变页面的路径,不会刷新页面 History 对象保存了当前窗口访问过的所有页面网址,可以通过 history.length 获知当前窗口访问过的页面数量 由于安全原因,浏览器不允许脚本读取这些地址...,但允许在地址之间跳转 浏览器工具栏的 “前进” 和 “后退” 按钮,其实就是对 History 对象进行操作 # 属性 History 对象主要有两个属性: History.length 当前窗口访问过的页面数量...() 移动到上一个网址,相当于点击浏览器后退键,该方法对于第一个访问的页面无效 注意移动到以前访问的页面时,页面通常是从浏览器缓存中加载,而不是重新请求服务器发送新的网页 History.forward
使用浏览器后退按钮重复之前的操作,导致重复提交表单。 使用浏览器历史记录重复提交表单。 浏览器重复的HTTP请求。 几种防止表单重复提交的方法 1.禁掉提交按钮。...我之前的文章曾说过用一些jQuery插件效果不错。 2.Post/Redirect/Get模式。在提交后执行页面重定向,这就是所谓的Post-Redirect-Get (PRG)模式。...这能避免用户按F5导致的重复提交,而其也不会出现浏览器表单重复提交的警告,也能消除按浏览器前进和后退按导致的同样问题。 3.在session中存放一个特殊标志。...当表单页面被请求时,生成一个特殊的字符标志串,存在session中,同时放在表单的隐藏域里。接受处理表单数据时,检查标识字串是否存在,并立即从session中删除它,然后正常处理数据。 ...如果发现表单提交里没有有效的标志串,这说明表单已经被提交过了,忽略这次提交。 这使你的web应用有了更高级的XSRF保护。 4.在数据库里添加约束。
hash 路由: 哈希路由把路由的路径用 # 拼接在 url 后面,当井号 # 后面的路径发生变化时,浏览器并不会重新发起请求,而是会触发 onhashchange 事件。...使用浏览器访问网页时,如果网页URL中带有hash,页面就会定位到id(或name)与hash值一样的元素的位置,故而又称之为锚点。...浏览器上的后退按钮 window.onpopstate = function (event) { //console.log(event); container.innerHTML...(state,title,url) } // 5.将事件定义在window属性上 浏览器的前进按钮 window.onpushstate = function(state,title,url...例如: history.back(); (后退一步,使用history.go(-1)也可实现后退效果) 弊端:只能操作前进后退,但是无法控制前进后要去哪,history.length都只会维持原来的状态
,WebView可以后退时执行后退操作。...另外需要一提的是,当使用WebView浏览网页时,不做处理的话,按下手机的返回键会直接结束WebView所在的Activity,通过重写onKeyDown()方法,当WebView可以返回时,让其执行返回操作...接下来为本篇重点,通过加载H5的方式可以很轻松做出炫酷的引导页,当然前提时你得先做出或者找到一个很好H5引导页文件。需要说明的都已经在文章开头说过了,就不废话了,先上效果图: ? ? ? ...相信不用我解释大家就能看懂,最左边的是第一张页面,中间的是过度动画效果,最右边的是最后一张,其中在最后一张上面有个按钮,捕捉到这个按钮的跳转链接是关键。...需要注意的是当加载具有js的文件时需通过WebSettings的setJavaScriptEnabed()方法开启对js的支持。
我们仔细的阅读一下这个简单的缓存资源请求流程,发现其中有几个重要的节点。首先,服务器在返回该资源时,要标记该资源的有效期。...然后,浏览器初次请求肯定是没缓存的,再次请求的时候,它要根据该资源的有效期来判断下一步该怎么办。OK,我们再简单一点,如果我们试图去获取缓存资源,其实是要看服务器的标记的。 ...,肯定不可能是0,所以当浏览器加上了max-age=0的时候,每次都会向服务器请求最新的资源。...当我们点击浏览器的前进后退按钮的时候,就会直接从缓存中获取数据,另外,重定向的时候,也可能会使用到缓存。那这两类操作有啥区别呢。...当你设置了no-store属性后,你会发现,哪怕使用浏览器的前进,后退按钮,每次也是重新从服务器获取资源,但是no-cache和max-age则会使用缓存。
但是列表的位置不再存在了,这意味着使用浏览器的返回按钮一般都导致滚动位置重置到页面顶部。无怪乎用户很快就觉得沮丧,都没有一个合适的“回到列表”的功能。 ?...别让你的用户就因为使用返回按钮,找不到列表的位置。很重要的是,用户通过列表访问了某一个项目的详情页,他们点击浏览器返回按钮返回列表的时候,也应该在相同的位置。...Flickr 监听用户点击浏览器后退按钮的行为,满足用户的期望。APP 记住用户的滚动位置,所以当用户按后退按钮的时候,返回到原始位置。 ? 4....当网站或应用提供书签功能的时候,用户会使用的。比方说,Pinterest,使用书签工具帮助用户保存创意。 ? 5. 加载新内容时提供视觉反馈 当内容在加载的时候,用户需要明确的指示,说明正在进行中。...WEB前端性能优化常见方法 一小时内搭建一个全栈Web应用框架 干货:CSS 专业技巧 四步实现React页面过渡动画效果 让你分分钟理解 JavaScript 闭包 ---- ---- 小手一抖,
当你开发的程序被按后退键退出的时候, 你肯定不想让他就这么被finish()吧,那么就想把程序退置到后台就可。...(类似于PC端,你关闭一个浏览器和你最小化一个浏览器的区别) 参看方法:public boolean moveTaskToBack(boolean nonRoot) 参数是一个布尔值 1、false,仅当...activity为task根(即首个activity例如启动activity之类的)时才生效 2、true,无论什么时候都会生效,忽略上述条件 注意:此方法不会改变task中的activity中的顺序,...---------------------------------------------------------------------------------- 例如: 在根Activity中重写后退按钮响应事件...,当按后退按钮的时候把Activity退置到后台 1 @Override 2 public boolean onKeyDown(int keyCode, KeyEvent event) { 3
通过这个对象,JavaScript 可在不重载页面的情况与 Web 服务器交换数据,即在不需要刷新页面的情况下,就可以产生局部刷新的效果。...对应用 Ajax 最主要的缺点就是,它可能破坏浏览器的后退与加入收藏书签功能。在动态更新页面的情况下,用户无法回到前一个页面状态,这是因为浏览器仅能记下历史记录中的静态页面。...一个被完整读入的页面与一个已经被动态修改过的页面之间的可能差别非常微妙;用户通常都希望单击后退按钮,就能够取消他们的前一次操作,但是在 Ajax 应用程序中,却无法这样做。 ...如果不给予用户明确的回应,没有恰当的预读数据,或者对 XMLHttpRequest 的不恰当处理,都会使用户感到厌烦。...(data,type) 用于处理 XMLHttpRequest 原始响应数据的函数 dataType 预期的服务器响应的数据类型 error(xhr,status,error) 如果请求失败要运行的函数
用户点击浏览器后退按钮后页面ajax没有更新,通过使用windowlocation对象的方法属性实现页面刷新并刷新数据 window.location.reload() 该方法使浏览器刷新当前页面。...该方法在刷新时会 事件: 如果有数据提交的话,会弹窗提示是否提交 bug: 安卓微信浏览器中location.reload方法失效无法跳转?...window.location.href = window.location.href; // 这样也可以实现页面刷新并提交数据,数据提交时无弹窗提示 location.replace() 该方法通过指定...URL替换当前缓存在历史里(客户端)的项目,因此当使用replace方法之后,你不能通过“前进”和“后退”来访问已经被替换的URL。...使用location.href属性跳转会被加入到浏览器的历史栈中,这意味着可以通过后退键来撤退。
领取专属 10元无门槛券
手把手带您无忧上云