jsp页面不执行当前页面的js方法
2012-05-25 14:02
375 查看
遇到一个问题,页面<a href="javascritpt"test();"></a>, 执行方法的时候,test()已经在本页面定义,跟踪程序发现test()函数在request中,而浏览器去servlet中去找被调用的test()函数了,以下是解决方法:
应该是<a href="#" onclick="javascritpt"test();"></a>
以下是相关转载:
本文都基于群里一个朋友提出的一个问题:
href="#" 和href="javascript:void(0);" 这哪个好些 ?
在说这个问题之前,我想应该思考一下,我们为什么要在页面不需要跳转的情况下选择<a>标签?
其实很大程度是是因为IE6,IE6只支持<a>的:hover伪类,所以要为了节约javascript来模拟hover的编码,<a>就是一个很好的选择。
但是使用<a>会导致一个问题:如果不添加href属性,那么css里的hover效果将会失效,如果添加了href,那么href应该何去何从呢.大部分情况下我们都不希望它跳转(阻止跳转).
而阻止跳转常见的有下面四种方式:
1. <a href="javascript:;" onclick="action();">link</a>
2. <a href="javascript:void(0);" onclick="action();">link</a>
3. <a href="###" onclick="action();">link</a>
4. <a href="#" onclick="action();return false;">link</a>
事实上这四种方式都可以很正常的工作。
第1和第2中可以归为一类,使用javascript 伪协议,只要什么都不返回,那么浏览器将不会跳转
第3种比较有意思,它使用了一个锚点(跳转到id或name为##的位置),在浏览器中, 如果一个锚点不存在,那么也不会跳转
第4种是在执行onclick的最后处加上return false, 这样就阻止了浏览器执行默认行为,同样就阻止了跳转
我以往的经验都证明第4种是最稳妥的方式,因为第2种和第2种都会在ie6下出现bug:
当A被点击, action() 函数里如果有设置location,设置img.src,设置iframe.src 行为,从而导致一个新的资源下载时,ie6会中断掉该行为。
比如这位朋友的记录:/article/4837719.html 作者文中最后推荐使用空链接"###"。
第三种真的稳妥么,或许我们可以猜测一下锚点的工作方式,
当<a>元素被点击,浏览器发现href="###" ,首先要判断这个href是否需要跳转到别的页面,如果不需要,那么浏览器会将href后面两个##取出来,然后遍历DOM树,找到第一个id(或者name)的值为##的,调用内部方法,使浏览器滚动到相应的位置 ,如果一个匹配的也没有找到,那么浏览器什么也不做。
而这个过程中, 浏览器需要做的事情可能还有
- 启动载入中提示
- 发出跳转提示音(ie6,ie7)
总之,###会导致浏览器执行一系列的默认行为(是否有性能问题?), 包括ie6 7非常讨厌的提示音,而只要我们阻止了默认行为,这一切都不会发生。
所以结论是,尽量不要使用href="javascript:;" href="###" ,而统一使用 onclick="return false;" ,这是安全的,也是体验最好的。
转载博客园 wait的博客
应该是<a href="#" onclick="javascritpt"test();"></a>
以下是相关转载:
本文都基于群里一个朋友提出的一个问题:
href="#" 和href="javascript:void(0);" 这哪个好些 ?
在说这个问题之前,我想应该思考一下,我们为什么要在页面不需要跳转的情况下选择<a>标签?
其实很大程度是是因为IE6,IE6只支持<a>的:hover伪类,所以要为了节约javascript来模拟hover的编码,<a>就是一个很好的选择。
但是使用<a>会导致一个问题:如果不添加href属性,那么css里的hover效果将会失效,如果添加了href,那么href应该何去何从呢.大部分情况下我们都不希望它跳转(阻止跳转).
而阻止跳转常见的有下面四种方式:
1. <a href="javascript:;" onclick="action();">link</a>
2. <a href="javascript:void(0);" onclick="action();">link</a>
3. <a href="###" onclick="action();">link</a>
4. <a href="#" onclick="action();return false;">link</a>
事实上这四种方式都可以很正常的工作。
第1和第2中可以归为一类,使用javascript 伪协议,只要什么都不返回,那么浏览器将不会跳转
第3种比较有意思,它使用了一个锚点(跳转到id或name为##的位置),在浏览器中, 如果一个锚点不存在,那么也不会跳转
第4种是在执行onclick的最后处加上return false, 这样就阻止了浏览器执行默认行为,同样就阻止了跳转
我以往的经验都证明第4种是最稳妥的方式,因为第2种和第2种都会在ie6下出现bug:
当A被点击, action() 函数里如果有设置location,设置img.src,设置iframe.src 行为,从而导致一个新的资源下载时,ie6会中断掉该行为。
比如这位朋友的记录:/article/4837719.html 作者文中最后推荐使用空链接"###"。
第三种真的稳妥么,或许我们可以猜测一下锚点的工作方式,
当<a>元素被点击,浏览器发现href="###" ,首先要判断这个href是否需要跳转到别的页面,如果不需要,那么浏览器会将href后面两个##取出来,然后遍历DOM树,找到第一个id(或者name)的值为##的,调用内部方法,使浏览器滚动到相应的位置 ,如果一个匹配的也没有找到,那么浏览器什么也不做。
而这个过程中, 浏览器需要做的事情可能还有
- 启动载入中提示
- 发出跳转提示音(ie6,ie7)
总之,###会导致浏览器执行一系列的默认行为(是否有性能问题?), 包括ie6 7非常讨厌的提示音,而只要我们阻止了默认行为,这一切都不会发生。
所以结论是,尽量不要使用href="javascript:;" href="###" ,而统一使用 onclick="return false;" ,这是安全的,也是体验最好的。
转载博客园 wait的博客
相关文章推荐
- 多种方法实现当jsp页面完全加载完成后执行一个js函数
- js实现jsp中关闭当前页面方法
- jsp页面调用不到当前页面定义的js方法,yntax error, insert "}" to complete MethodBody
- jsp页面:js方法里嵌套java代码(是操作数据库的),如果这个js 方法没被调用,当jsp页面被解析的时候,不管这个js方法有没有被调用这段java代码都会被执行?
- 页面自动执行(加载)js的几种方法
- JS刷新当前页面的几种方法总结
- js获取当前页面的url信息方法
- AJAX载入外部JS文件到页面并让其执行的方法(附源码)
- 如何用js得到当前页面的url信息方法(JS获取当前网址信息)
- JS关闭当前页面的方法
- JS实现判断滚动条滚到页面底部并执行事件的方法
- JS 刷新当前页面 返回上一页并刷新的方法
- 页面加载完成后自动执行一个方法函数的JQ、JS方法
- 如何用js得到当前页面的url信息方法(JS获取当前网址信息)
- JS刷新当前页面的几种方法总结
- 如何用js得到当前页面的url信息方法(JS获取当前网址信息)
- JS 刷新当前页面 返回上一页并刷新的方法
- 在myeclipse中代码修改不起作用:当在myeclipse中修改处理方法的代码时,重新发布Tomcat,在运行时,jsp页面显示内容没变,还是按修改前的代码执行
- 多种方法实现当jsp页面完全加载完成后执行一个js函数
- 如何用js得到当前页面的url信息方法(JS获取当前网址信息)