首页 > 编程知识 正文

微信api,js模拟按下回车键

时间:2023-05-05 22:48:54 阅读:139651 作者:98

a .场景1 :直接进入a页面,点击微信上的后退按钮

代码如下。

window.addevent监听器(' pop state ',function(e ) {

weixinjsbridge.call (close window );

},false;

预期:关闭页面,返回以前的微信界面

实际结果:现象与预期相符,但没有截获popstate。

原理:仅当浏览器执行操作以更改历史记录时,才会触发popstate事件。

b .场景2 :直接进入a页面,在a页面自动$state.go跳到子页面b,在b页面中途返回

代码如下。 写入父页面a

window.addevent监听器(' pop state ',function(e ) {

weixinjsbridge.call (close window );

},false;

预期:返回微信页面

实际结果:页面加载到b页面后,直接返回微信页面

修复:添加标识位isFirst,以防止在加载页面时更改history并启动popstate

修改后的代码如下。

$scope.isFirst=true;

window.addevent监听器(' pop state ',function(e ) {

if (! $scope.isFirst

weixinjsbridge.call (close window );

}else{

$scope.isFirst=false;

}

},false;

c .场景3 :首先进入a页面,在a页面上用window.location跳到b页面,在b页面的中点返回

代码如下。

window.addevent监听器(' pop state ',function(e ) {

weixinjsbridge.call (close window );

},false;

预期:进入拦截,正常返回微信页面

实际结果:监听被触发,但返回a页

修改代码后:

功能推送历史

var state={

title: 'title ',

url: '# '

(;

//state:与指定网址相关联的状态对象。 当发生popstate事件时,回调函数window.history.pushstate(state,' title ',' # ' );

//添加此记录时,浏览器的地址为最新地址,即原始URL的末尾为#,history.length为1,浏览器返回原始URL,页面内容保持不变}

推式历史(;

window.addevent监听器(' pop state ',function(e ) {

weixinjsbridge.call (close window );

},false;

修正原理: popstate的监听原理在浏览器行为时触发,但页面返回上一页,不能用Web页面代码操作。 因此,使用pushState添加此页面的url,代表此页面,在window.history.pushState中将本地链接推入history,单击返回,进行监听,监听代码

注:调用history.pushState (或history.replaceState )不会触发popstate事件。 例如,只有在执行浏览器操作(如单击浏览器的后退按钮或在JS中调用history.back )时才会触发

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。