最近移动端项目用alert和confirm进行信息提示,但发现在iOS系统中,每次提示信息上面都会被添加一行URL地址。
那么如何去掉地址提示呢,经查找和实现发现进行重写alert和confirm方法可解决此问题。
代码如下:
重写alert方法:
1
2
3
4
5
6
7
8
|
window.alert = function (name){
var iframe = document.createElement( "IFRAME" );
iframe.style.display= "none" ;
iframe.setAttribute( "src" , 'data:text/plain,' );
document.documentElement.appendChild(iframe);
window.frames[0].window.alert(name);
iframe.parentNode.removeChild(iframe);
};
|
重写confirm方法:
1
2
3
4
5
6
7
8
9
10
|
window.confirm = function (message) {
var iframe = document.createElement( "IFRAME" );
iframe.style.display = "none" ;
iframe.setAttribute( "src" , 'data:text/plain,' );
document.documentElement.appendChild(iframe);
var alertFrame = window.frames[0];
var result = alertFrame.window.confirm(message);
iframe.parentNode.removeChild(iframe);
return result;
};
|
其中confirm方法要return子框架的结果。否则默认都是“取消”的效果。
衍生知识点:
html中data类型的url
针对于一些小的数据,可以在网页中直接嵌入,而不是从外部文件载入,比如图片。这样的好处是可以减少一次http的请求,缺点是使得页面内容变大。data类型的url格式在98年就已经提出了,现在绝大部分的浏览器都能支持,比如使用IE6内核的国内浏览器,chrome和firefox等,但IE8上使用有问题,图片显示不完整。
data类型的url有以下几种形式:
1
2
3
4
5
6
7
8
9
10
11
12
|
data:,<文本数据>
data:text/plain,<文本数据>
data:text/html,<HTML代码>
data:text/html;base64,<base64编码的HTML代码>
data:text/css,<CSS代码>
data:text/css;base64,<base64编码的CSS代码>
data:text/javascript,<Javascript代码>
data:text/javascript;base64,<base64编码的Javascript代码>
data:image/gif;base64,base64编码的gif图片数据
data:image/png;base64,base64编码的png图片数据
data:image/jpeg;base64,base64编码的jpeg图片数据
data:image/x-icon;base64,base64编码的icon图片数据
|
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。