JS代码在Firefox中失效,没有调用如何解决??

神之泪花 2010-03-16 11:28:43
在JSP中调用的JS方法在IE中好用,到了Firefox下不好用了
JSP文件:
<html:text property="testDate" style="width: 40%" onclick="setday(this)" maxlength="10" onkeydown="javascript:return false;"/>

setday是调用的calendar.js文件中的一个方法

JSP中引入JS文件
<script type="text/javascript" src="<html:rewrite page='/js/calendar.js'/>"></script>


calendar.js文件setday方法:

function setday(tt)
{

alert(tt);
}


//alert处没有打出任何信息,很是奇怪


上面写的调用calendar.js文件setday方法的代码,在IE下正常看到提示信息
FireFox下没有任何提示,即setday方法没有被调用,请高手指点,十分感谢!
...全文
612 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
tmacbaby 2010-09-20
  • 打赏
  • 举报
回复
还有为什么我把这句标准:“<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">”删掉就可以了,加上就不行了呢?
tmacbaby 2010-09-20
  • 打赏
  • 举报
回复
这个问题具体这么解决啊?我也遇到了同lz一样的情况。按2楼的做法还是不能调用,纠结中。。。请高人指点一下。谢谢!
yaoxingyan 2010-05-31
  • 打赏
  • 举报
回复
纠结 LZ你的这个问题怎么解决的
孟子E章 2010-03-16
  • 打赏
  • 举报
回复

<input name="testDate" maxlength="10" value="" onclick="setday(this)" onkeydown="javascript:return false;" style="width: 40%;" type="text">

<script>
function setday(o)
{
alert(o.value)
}
</script>


没有任何问题。
是你其他的地方干扰的
神之泪花 2010-03-16
  • 打赏
  • 举报
回复
浏览器解析后HTML代码

<input name="testDate" maxlength="10" value="" onclick="setday(this)" onkeydown="javascript:return false;" style="width: 40%;" type="text">


跟IE解析的是一样的,(~ o ~)~zZ
goosman 2010-03-16
  • 打赏
  • 举报
回复
通过给元素上面加onclick指定, 就相当于document.getElementById('test').onclick = (function(){})的使用方式.

由于firefox并不支持对象的onxxxx这样的事件属性(这是IE中独有的), 所以, 尽可能的使用标准的DOM事件处理方式: document.getElementById('test').addEventListener('click', (function(){}), true), 其中最后一个参数是为了表明是在捕获阶段触发该事件, 还是在冒泡阶段....

有关捕获阶段和冒泡阶段可以查看IE和W3C各自的事件处理的发展....

在知道上面这些之后, 就需要做跨浏览器处理:
对于你这里的问题, 简单处理(不要给标签上直接加onclick属性)
注意, 下面的处理只是认为只有IE和标准浏览器, 没有做更细化的跨浏览器, 当然, 对于一些伪装也没有检测.
<script type="text/javascript">
function handle() {
alert();
}
var ele = document.getElementById('test');
if(window.navigator.userAgent.indexOf("IE") == -1) {
ele.addEventListener('click', handle, true);
} else {
ele.onclick = handle;
}
</script>
孟子E章 2010-03-16
  • 打赏
  • 举报
回复
一般的问题是这么导致:
1,js文件路径问题
2,js文件编码问题
3,js文件中有其他代码导致的脚本错误问题


js
是前端代码,你看浏览器中的源代码就可以了,贴服务器端的代码意义不大
神之泪花 2010-03-16
  • 打赏
  • 举报
回复
最新进展,

换了一个JS日历,清了FF的缓存

好用了,O(∩_∩)O~

还得弄一个小时和分的JS,修改中~~~
神之泪花 2010-03-16
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 mail_ylei 的回复:]
试试

HTML code

<input name="testDate" id="testDate" maxlength="10" value="" onclick="setday('testDate')" onkeydown="javascript:return false;" style="width: 40%;" type="text"/>



JScript c……
[/Quote]
试了,这个不好用
神之泪花 2010-03-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lgg201 的回复:]
通过给元素上面加onclick指定, 就相当于document.getElementById('test').onclick = (function(){})的使用方式.

由于firefox并不支持对象的onxxxx这样的事件属性(这是IE中独有的), 所以, 尽可能的使用标准的DOM事件处理方式: document.getElementById('test').addEventListen……
[/Quote]

这种添加触发事件的方法跟.Net很类似,不过我们现在只能改一个js文件
这种帮顶恐怕要大规模的改了
孟子E章 2010-03-16
  • 打赏
  • 举报
回复
另外,清空缓存再测试
孟子E章 2010-03-16
  • 打赏
  • 举报
回复
查看浏览器源代码
<script type="text/javascript" src="<html:rewrite page='/js/calendar.js'/>"></script>


生成的是什么
神之泪花 2010-03-16
  • 打赏
  • 举报
回复
试了一下,不用引入calendar.js的方式

直接在JSP文件中添加
function setday(tt)
{

alert(tt);
}

可以执行

难道是JS引入那句代码没有识别??
<script type="text/javascript" src="<html:rewrite page='/js/calendar.js'/>"></script>
神之泪花 2010-03-16
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 lianqin7 的回复:]
在calendar.js中加入一句

JScript code

(function (){
alert("加载了!");
})();


试一试calender文件在FF下到底加载了没有..
[/Quote]

确实没加载,= 。=
lianqin7 2010-03-16
  • 打赏
  • 举报
回复
在calendar.js中加入一句

(function (){
alert("加载了!");
})();

试一试calender文件在FF下到底加载了没有..
mail_ylei 2010-03-16
  • 打赏
  • 举报
回复
试试

<input name="testDate" id="testDate" maxlength="10" value="" onclick="setday('testDate')" onkeydown="javascript:return false;" style="width: 40%;" type="text"/>





<script>
function setday(testId)
{
alert("调用了");
alert(document.getElementById(testId).value);
}
</script>

神之泪花 2010-03-16
  • 打赏
  • 举报
回复
calendar.js文件中,是不是需要有JS的文件头和尾???

现在这个文件里只有

function setday(tt)
{

alert(tt);
}
神之泪花 2010-03-16
  • 打赏
  • 举报
回复
为了便于测试,calendar.js文件中只有setday方法:

function setday(tt)
{

alert(tt);
}


工程路径检查过,
同样引入calendar.js文件,
setday方法在IE下面可以正常访问

在FireFox下就没反应,郁闷

87,997

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧