ie6 找不到 js 文件 中的对象。

昨天在调用一段外部js时候IEtester的IE6模式报错。说某函数is undefined。可是其他的浏览器均正常,最后终于发现是编码问题,使用文本文档令存为的时候选择一下与网页相符的编码就解决问题了。这个以后要注意了~

下面是网上搜集的一些相关资料。

解决“引入JS文件IE6报错”的问题

问题描述:页面引入一个js文件,其中定义了函数或对象,然后在页面中调用函数或对象时,在IE6会报“语法错误”或“缺少对象”。在IE6+或者IE7却运行正常。

问题分析:这个对象在引入的JS文件中是存在的,因为在IE6+以上的浏览器都可以正常运行。这个问题在于文件编码上,如果JS文件编码与当前页面的编码不一致,就可能导致在IE6中页面不能正常获取和解析JS文件中的内容,在IE6中,默认引入的文件和页面的编码是一致的。在IE6+以上的浏览器中,一般浏览器会自动识别每个外部文件的编码并进行解析;

问题解决:
   一:引入js文件时加charset属性,保持与页面编码一致;
   二:修改引入文件编码格式;
   三:新建一个文件格式同页面编码格式一致,复制粘贴内容;
(个人建议第三种方法,但建议在导入js时加上charset属性!)

今天发现一个奇怪的问题,

在jsp页面引用的js文件里面的方法 ,都报找不到对象的错误。

js在 引用也正常。就是找不到对象。。。。。。。。。。。。。。。。。。。

ie6下不行。

其他正常。

 

 

 

 

以前我用struts,但是页面还有中文字符,现在我把中文字符全部用 写在网页里,结果ajax不灵了,在firefox下可以,在ie下就不行了,但是如果直接吧ajax写在网页里,又都可以

下面是我的userajax.js文件内容

var req;

function createXMLHttpRequest() {

if (window.ActiveXObject) {

req = new ActiveXObject("Microsoft.XMLHTTP");

}

else if (window.XMLHttpRequest) {

req = new XMLHttpRequest();

}

}

function checkUsername(value)//使用Ajax访问服务器

{

createXMLHttpRequest();

if(req){

req.onreadystatechange=setEnValue;

req.open("GET"," eckUsername?username="+value);//把参数带到服务器中

req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

req.send(null);

}else{

alert("XMLHttpRequest not created!!");

}

}

function setEnValue()

{

if (req.readyState==4 )//访问到服务器

{

if(req.status==200)//正确返回

{

var v=req.responseText;

document.getElementById("userexist").innerHTML=v;

}

else if(req.status==404){

alert("Not found!");

}

}

}

这个文件包含在jsp文件中

jsp页面:

<script src="/cn/js/search.js" type="text/javascript"></script>

 

 

 

 

 

|||----------------------------------------------------------------↓↓↓1楼 得分:0

另外,本人还有一个问题

function checkSearchform(){

document.searchform.searchname.focus();

searchname=document.searchform.searchname.value;

if (searchname == "") {

window.alert(" ");

document.searchform.searchname.focus();

return;

}

document.searchform.submit();

}

因为我是用struts,要用到国际化功能,但不喜欢用validator验证客户端,更喜欢用js做客户端验证,我如果把以上js直接写在jsp页面上,就可以显示 指定的值,但是如果把这个js作为一个js文件包含在jsp页面上,就不能显示那个key指示的值,我想问一下有没有其他的地方法显示key对应的值?

|||----------------------------------------------------------------↓↓↓2楼 得分:0

该回复于2009-04-20 15:17:30被管理员删除

|||----------------------------------------------------------------↓↓↓3楼 得分:10

没有碰到过,应该包括在里面和写在页面是一样的,看看你的那个 会不会和JS的的一些东西有冲突

|||----------------------------------------------------------------↓↓↓4楼 得分:70

有很大的可能性是js文件中的中文注释引起的,请把js中的中文注释全部去掉。

这是因为当js文件被浏览器加载的时候,由于不知道该用什么字符集来解析(没有深入研究过,我认为是以js所属的页面的字符集),

有时候字符集不匹配(比如因为使用的编辑工具把js村成了UTF-8而页面指定的编码是gbk),

中文字符的出现会破坏js语法。

|||----------------------------------------------------------------↓↓↓5楼 得分:10

http://hi.baidu.com/lael80/blog/item/5d2d835053d5a26285352449.html

|||----------------------------------------------------------------↓↓↓6楼 得分:10

那需要隐藏字段,然后在js里面取隐藏字段

|||----------------------------------------------------------------↓↓↓7楼 得分:0

非常感谢jinxfei网友,按照你的思路,就可以了!

也感谢其他参与的网友!

|||----------------------------------------------------------------↓↓↓8楼 得分:0

引用 7 楼 defokus 的回复:

非常感谢jinxfei网友,按照你的思路,就可以了!

也感谢其他参与的网友!

侥幸而已,因为我自己曾经两次碰到过这个问题。

你可能感兴趣的:(Ajax,jsp,浏览器,struts,IE)