背景:最近在做H5页面,当用户在浏览器读完引导之后自动打开小程序。原本一些按部就班,毕竟这一阵一直在搞外部访问的,但是当我测试的时候我发现,并不符合我的预期,在安卓机上弹出是否允许拦截弹出,点击允许之后新打开了一个空白页;而ios上直接莫得任何反应。
原因:一顿搜寻了一番,拒说因为浏览器只有在认为click和submit在打开新窗口时(如果是_self则不会有此限制),这些操作是由用户主动触发时才是安全可以被执行,而不是用户主动触发的,浏览器会认为是弹出的广告进而进行拦截。
解决办法:既然如此,那就不用winodw.open而是通过window.location.href来打开新的url,果然,没有任何问题。特此,查了下两者有啥区别。
两者区别:
- window.location.href是不方法,它是一个属性,它将告诉您浏览器的当前URL位置。更改属性值将重定向页面。
- window.open()是在新窗口中打开的URL传递给的方法。如果不是用户点击行为存在浏览器拦截的情况。
window.location.href = 'http://www.google.com';
window.open('http://www.google.com');