让ie支持placeholder(ie10下的ie7模式getAttribute('placeholder')返回null)

本文详细介绍了在部分IE9升级到IE10后,再切换为IE7模式时,getAttribute('placeholder')返回null的现象,并提供了一个使用jQuery修复此问题的代码示例。此外,还讨论了使用getAttributeNode和nodeValue获取属性值的方法作为替代方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[size=medium]现代浏览器都支持placeholder了,目前还有ie6、7、8、9不支持。
上网都能搜到让低版本的ie实现类似placeholder的效果的js代码,一般都是用getAttribute实现,一般都可以兼容ie6、7、8、9了
我一开始也是用原生JS写的,但今天做项目的时候发现一个问题:
[b]部分ie9升级到ie10后,然后再切换为ie7模式时,getAttribute('placeholder')时,会返回null[/b]
目前只发现在ie10下的ie7模式有这个bug
后来用JQ来重写这些代码就修复了。[/size]
代码如下:
(function($){
$(document).ready(function() {
var input = $('.acc_search_form_keyword'),//要实现placeholder的input标签
defaultValue = input.attr('value'),
text = input.attr('placeholder'),
supportPlaceholder = 'placeholder' in document.createElement('input');
placeholder = function(input,text,defaultValue) {
if (defaultValue == '') {
input.attr('value',text);
}
input.focus(function(){
if(input.attr('value') === text){
$(this).attr('value','');
}
});
input.blur(function(){
if(input.attr('value') === ''){
$(this).attr('value',text);
}
});
};
if (!supportPlaceholder && input.attr('type') === 'text' && text) {
placeholder(input,text,defaultValue);
}
});
})(jQuery)


网上也有人说 [b]使用getAttributeNode得到属性节点,再通过nodeValue得到该属性节点的值 [/b] 也可以解决,但我没尝试,有兴趣的可以试试
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值