总结iframe onload事件无法监听的问题

目的:做一个web页面,希望能够在ios平台上动态更改title,项目中要求从服务器获取数据,然后动态更改html的title。

原因:一般更换title,通过方法 document.title = “title”就可以了,但是ios规定在页面完成后就不在监听更改title的事件了,所以不能用这个方法来更改title。

从网上找了些方法:基本思路是动态创建iframe,ios就可以进行刷新,更换title,然后 加载完成后删除iframe;

1、利用jquery做的

在服务器回调中进行,在最外层加上setTimeout();这个方法我试了,如果在html页面中进行,是可以正常工作,但如果在一般的js文件里就不行,原因不清楚,可能原因是ifame create的时候浏览器就默认加载完成了,所以不触发onload事件。

setTimeout(function(){ var $body = $(body); document.title = the title you want to set; var $iframe = $("<iframe style=display:none; src=./icon.png></iframe>"); $iframe.on(load,function() { setTimeout(function() { $iframe.off(load).remove(); }, 0); }).appendTo($body); }, 0);

2、js版本的

效果跟jquery差不多

3、生成div,然后在div的innerHtml中动态生成iframe

这个方法在ios环境可以正常运行,比上两种方法更好用

经验分享 程序员 微信小程序 职场和发展