首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Safari浏览器在window.location之后停止执行js

是因为Safari浏览器在处理window.location时存在一些特殊的行为。

具体来说,当代码执行到window.location时,浏览器会开始加载新的页面。在加载新页面的过程中,Safari浏览器会停止当前页面的JavaScript执行,以确保页面跳转的顺利进行。这意味着在window.location之后的任何JavaScript代码都不会被执行。

这种行为可能会对开发者造成一些困扰,特别是当需要在页面跳转后执行一些操作时。为了解决这个问题,可以使用以下两种方法之一:

  1. 使用setTimeout函数延迟执行代码:通过将需要执行的代码包装在setTimeout函数中,并设置一个适当的延迟时间,可以确保代码在页面跳转后执行。例如:
代码语言:javascript
复制
window.location = "https://example.com";
setTimeout(function() {
  // 在页面跳转后执行的代码
}, 1000); // 延迟1秒执行
  1. 在新页面中使用DOMContentLoaded事件:如果你有控制新页面的代码,可以在新页面中使用DOMContentLoaded事件来执行需要在页面加载完成后执行的代码。例如,在新页面的JavaScript文件中:
代码语言:javascript
复制
document.addEventListener("DOMContentLoaded", function() {
  // 在页面加载完成后执行的代码
});

需要注意的是,以上方法只是解决在Safari浏览器中window.location之后停止执行JavaScript的问题。对于其他浏览器,这种行为可能不会发生,因此在编写跨浏览器兼容性代码时,需要考虑到不同浏览器的行为差异。

关于Safari浏览器和JavaScript的更多信息,可以参考腾讯云的产品介绍页面:Safari浏览器

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

JavaScript(九)

IE9+、Safari 和 Firefox 中,outerWidth 和 outerHeight 返回浏览器窗口本身的尺寸, Opera 中,这两个属性的值表示页面视图容器的大小。...间歇调用和超时调用 JavaScript 是单线程语言,但它允许通过设置超时值和间歇时间值来调度代码特定的时刻执行。前者是指定的时间过后执行代码,而后者则是每隔指定的时间就执行一次代码。...如果队列是空的,那么添加的代码会立即执行; 如果队列不是空的,那么它就要等前面的代码执行完了以后再执行。 调用 setTimeout() 之后,该方法会返回一个数值 ID,表示超时调用。...也就是说,显示这些对话框的时候代码会停止执行,而关掉这些对话框后代码又会恢复执行。 alert() 接受一个字符串并将其显示给用户。...这个方法只接受一个参数,即要导航到的 URL,结果虽然会导致浏览器位置改变,但不会在历史记录中生成新记录。调用 replace() 方法之后,用户不能回到前一个页面。

1.1K40
  • iOS Universal link 入门指南

    当你的应用支持Universal Link(通用链接),当用户点击一个链接是可以跳转到你的网站并获得无缝重定向到对应的APP,且不需要通过Safari浏览器。...浏览器或者其他APP的webview中拉起相应的APP,也可以APP中使用相应的功能,从而来把用户引流到APP中。...比如在Safari浏览器中进入淘宝网页点击打开APP则会使用Universal Link(通用链接)来拉起淘宝APP。...另外,URL scheme因为是自定义的协议,所以没有安装 app 的情况下是无法直接打开的(Safari中还会出现一个不可打开的弹窗),而Universal Link(通用链接)本身是一个HTTPS...上传完后,自己先访问一下,看看是否能够获取到,当你浏览器中输入这个文件链接后,应该是直接下载apple-app-site-association文件。

    1.9K11

    H5页面判断客户端是iOS或者Android并跳转对应链接唤起APP

    通过判断是否是微信,部分不能用微信打开的页面,可以设置一个引导提示,让用户浏览器中打开。 ...就能实现js点击跳转到适合手机的设备了。...iOS7/iOS8 iOS 中默认通过 Safari 打开 URL scheme ,方法一般有如下两种: 直跳方式: 点击链接、修改 window.location 等。...该方法不会引起页面可见的变化(例如页面内容变成一个新页面),不会导致浏览器历史记录的变化,大致实现如下: body 上添加 iframe,设置 src 属性为跳转的 URL scheme 。...>");             //没有安装应用会执行下面的语句             setTimeout(function(){window.location = 'http://www.yourdlurl.com

    13.2K30

    Performance API不完全使用指北

    使用浏览器的DevTools来评估web应用性能是很有用的,但要复现现实世界的使用情况并不容易。因为人们不同地点使用不同的设备、浏览器和网络,都会有不同的体验。...页面导航时间 快速连接上测试你的网站,并不能代表用户体验。浏览器DevTools的NetWork标签允许你限制速度,但它不能模拟糟糕的或间歇性的信号。...transferSize 资源大小,包括头部和主体 encodedBodySize 解压前的资源主体大小 decodedBodySize 解压后的资源主体大小 最后,该对象包括进一步的导航和DOM事件属性(Safari...所有的用户时间方法都可以客户端的JavaScript、Web Workers、Deno和Node.js中使用。...可以用于Node.js浏览器JavaScript,但不能用于IE和Safari。 当管理多个定时器时,performance.now()很快就变得不切实际。.

    98520

    JavaScript判断浏览器内核,微信打开自动提示浏览器打开

    微信会屏蔽 URL 自定义的 scheme ,导致无法跳转手机中的浏览器。网上有一些工具类网站可以实现直接跳转浏览器之后有机会我会整理一下。...我们今天只讨论通过 JavaScript 判断是否微信浏览器中打开,如果是则弹出提示,浏览器中打开。...通过 JavaScript 判断浏览器内核,如果是微信,显示信息,提示“浏览器打开”,如果不是则自动跳转下载链接:   /*    * 智能手机浏览器版本信息:    */   var...: u.indexOf('iPad') > -1, //是否iPad         webApp: u.indexOf('Safari') == -1, //是否web应该程序,没有头部与底部         .../appdown/baidu.apk";   } 这样如果是微信打开会自动提示浏览器中打开,如下图所示:

    4.2K10

    理解JavaScript中的window对象

    BOM只浏览器环境中有意义。这意味着其他环境可能没有window对象,尽管他们仍有全局对象。比如说,Node.js拥有一个称为global的对象。...undefined: window.alert('Hello'); >> undefined Alert Dialog.png 「Confirm dialog」 window.confirm()方法会停止程序的执行...; >> undefined Confirm dialog.png 「Prompt dialog」 window.prompt() 方法会停止程序的执行,并显示一个对话框。...,将会返回null: window.prompt('Please enter your name:'); Prompt dialog.png 谨慎使用原生对话框 值得再次强调的是,这些方法会在程序执行过程中让程序停止执行...这意味着方法被调用的时刻,一切都将停止处理,直到用户点击确认或者取消。如果程序需要同时处理其他东西,或者程序等待回调函数,那么这种方式就会造成问题。

    1.6K20

    通过Js判断客户端为PC端还是手持设备

    原理 Js中获取浏览器信息字符串只要使用navigator.userAgent即可,这样我们再利用indexof来判断版本或其它信息了。...('iPad') > -1, //是否iPad webApp: u.indexOf('Safari') == -1 //是否web应该程序,没有头部与底部...= "http://m.zhaizhainv.com"; } 3.基本版 js的 alert(navigator.userAgent.toLowerCase()); 方式获取浏览器的userAgent...网络爬虫发送http请求获取网页数据时也会在头部附加 User-Agent信息,特别注意的一点就是有些野蜘蛛 User-Agent信息为空,这样就需要在程序中做是否为空的判断,防止robots.txt...判断客户端是否为PC还是手持设备 利用JS userAgent判断识别浏览器代码 HTTP请求中的User-Agent 判断浏览器类型的各种方法 网络爬虫的请求标示

    7.7K20

    BOM

    浏览器中,window对象有双重角色,它既是通过JavaScript访问浏览器窗口的一个接口,又是ECMAScript规定的Global对象。 1....间歇调用和超时调用 (1)超时调用的代码都是全局作用域中执行的,因此函数中this的值非严格模式下指向window对象,严格模式下是undefined。...也就是说,显示这些对话框的时候代码会停止执行,而关掉这些对话框后代码又会恢复执行。 还有两个可以通过JavaScript打开的对话框,即“查找”和“打印”。...// 立即打开新URL并在浏览器的历史记录中生成一条记录 location.assign("http://blog.csdn.net/ligang2585116"); 如果是将kk或是window.location.../537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36” 四、screen对象 // 调整浏览器窗口大小,使其占据屏幕的可用空间

    1.3K51

    BOM

    浏览器中,window对象有双重角色,它既是通过JavaScript访问浏览器窗口的一个接口,又是ECMAScript规定的Global对象。 1....间歇调用和超时调用 (1)超时调用的代码都是全局作用域中执行的,因此函数中this的值非严格模式下指向window对象,严格模式下是undefined。...也就是说,显示这些对话框的时候代码会停止执行,而关掉这些对话框后代码又会恢复执行。 还有两个可以通过JavaScript打开的对话框,即“查找”和“打印”。...或是window.location设置为一个URL值,也会以该值调用assign()方法。.../537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36” 四、screen对象 // 调整浏览器窗口大小,使其占据屏幕的可用空间

    93030

    JS DOM学习笔记

    timer计时器 function closeTimer(){ clearInterval(timer); } 5、setTimeout(method, delay); //deay毫秒之后执行...method函数,和setInterval的区别是setTimeout只执行一次,setInterval可以不断的执行无数次 6、onload(页面加载后触发):网页加载完毕时触发,浏览器是一边下载文档...、一边解析执行,可能会出现JavaScript执行时需要操作某个元素,这个元素还没有加载,如果这样就要把操作的代码放到body的onload事件中,或者可以把JavaScript放到元素之后。...鼠标按下)、onmousemove(鼠标移动)、onmouseout(鼠标离开元素范围)、onmouseover(鼠标移动到元素范围)、onmouseup(鼠标按键释放)、oncontextmenu(浏览器中单击鼠标右键显示...的ready则是Dom元素创建完毕后被触发,这样可以提高网页的响应速度 15、js打印一个对象的所有属性: //传入一个对象 function (swiper){ var msg = "";

    4K40

    以登录注册理解Cookie的作用过程

    这篇文章是前一篇文章(Cookie理论知识)的实践性理解 完整代码: 完整代码 Cookie注册登录时的作用过程: 注册 注册时把账号密码写入数据库 登录 第一次登录时服务器给浏览器发送Cookie....那么就无需再次登录了.相当于服务器给浏览器发了进入门票,下次或下下次浏览器进入服务器的时候给服务器看票就可以了 后台读取Cookie保留登录状态与删除Cookie退出登录状态 首页代码: ...浏览器得到 响应中Cookie 之后之后每次请求这个域名都要带上这个 Cookie 之后服务器读取当时自己设置的 Cookie 就知道登录用户的信息(email) 几个关于Cookie的问题 1.我...Chrome 登录了得到 Cookie,用 Safari 访问,Safari 会带上 Cookie 吗 no 2.Cookie 存在哪 Windows 存在 C 盘的一个文件里 3.Cookie会被用户篡改吗...可以,例如在谷歌浏览器开发者模式下的application->Cookie中可以手动修改,修改之后,下次发送请求时,附带的就是修改后的Cookie ?

    1.7K50

    script 的三种加载方式 (async, defer)

    Note JS 的加载分为两个部分:下载和执行浏览器执行 HTML 的时候如果遇到时会停止页面的渲染,去下载和执行 js 的文件直接遇见会继续渲染页面。...故浏览器执行 js 文件的时候浏览器表现为一片空白,为了解决这个问题 ECMAScript 定义了 defer 和 async 两个属性用于控制 JS 的下载和执行。...当浏览器解析到标签时,浏览器停止解析其后的内容,而优先下载脚本文件,并执行其中的代码,是个同步阻塞的过程。...执行过程中浏览器处于阻塞状态,响应不了任何需求。如果 js 前后有依赖性,用 async,就很有可能出错。...所以就有可能出现脚本执行顺序被打乱的情况;每一个 defer 属性的脚本都是页面解析完毕之后,按照原本的顺序执行,同时会在 document 的 DOMContentLoaded 之前执行

    2.6K10

    这行代码让电脑死机、iPhone重启?

    #dos #0day #exploit //使用下面这段JavaScript代码能让firefox,chrome,safari浏览器崩溃,而且还能让iPhone重启。...点开以后,我的状态是这样的: 如果你是PC端用户,点开链接以后,电脑CPU内存极有可能一路狂飙直至浏览器崩溃卡死! 如果你是移动端(安卓、iPhone)用户,点开链接以后你的浏览器会闪退!...微博、微信客户端点开链接同样会闪退。至于推文中提到的让iPhone重启,这一现象倒是没有出现。22:49 修正:iPhone用Safari打开之后链接之后,手机注销重启了!...(我先来个:当在执行MITM中间人攻击的时候,可以注入这一段js,来个恶搞整蛊。然后都懂的...) 欢迎大家点击原文评论区发表自己的观点 :) 微博评论/讨论摘取 怀孕了... 好有趣......整蛊不错 我已祸害了好多人(卖萌脸(づ ̄ 3 ̄)づ) 崩溃了 火狐假死10秒后弹窗提示脚本无响应可停止难道是history的栈溢出么? 可以可以,新姿势get√ JS是世界上最好的语言!

    3.1K81
    领券