今天修改一个Bug,让我很不理解的问题,前说一下背景:
项目当中一个活动页面,是在手机端显示的,没有用HTML5只是使用了JSP文件来实现,首现有A、B两个页面,A页面为HTML页面(此页面是根据一个模板生成出来的HTML页面,放在服务器上可以正常访问与各种连接点击),B页面为JSP活动页面(此页面当中有相关请求到服务器以便进入活动)。
再说一点,A页面当中有一个<a>标签,点击A标签进入后台转向到B页面进行话动,三大框架的项目的应用多的不说了,重点看下面分析。
经过后台的跳转后到B.jsp页面,B页面里的样式与相关引用JS都失效了,使用Firebug查看B页面<head>标记里的所有样式与JS都被替换成了A.html页面的样式,如下代码:
A.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="expires" content="0"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" type="text/css" href="#href#web/htmlFile/css/jquery.mobile.structure-1.3.2.min.css"> <style type="text/css"> .contentDiv p{ text-indent:0pt;} .ui-li-heading{white-space:normal} </style> <script src="#href#web/htmlFile/js/jquery-1.10.2.min.js"></script> <script src="#href#web/htmlFile/js/jquery.mobile-1.3.2.js"></script> <script language="javascript"> $(document).bind('mobileinit', function() { $.mobile.loader.prototype.options.text = "加载中..."; $.mobile.loader.prototype.options.textVisible = false; $.mobile.loader.prototype.options.theme = "a"; $.mobile.loader.prototype.options.html = ""; }); </script> </head> <body> //省略各种代码 </body> </html>
B.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort()+ path + "/"; %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0" /> <meta name="apple-mobile-web-app-capable" content="yes" /> <meta name="apple-mobile-web-app-status-bar-style" content="black" /> <meta name="HandheldFriendly" content="true" /> <meta http-equiv="x-rim-auto-match" content="none" /> <meta name="format-detection" content="telephone=no" /> <link rel="stylesheet" href="<%=basePath%>activity/css/activity_01.css" type="text/css"> <script src="<%=basePath%>js/jquery-1.4.4.min.js"></script> <script src="<%=basePath%>js/jquery.json-2.3.min.js"></script> <script type="text/javascript"> var basePath = '<%=basePath%>'; var nm = '${num}'; function getActivity(){ try{ $("#getBottom").css("background","none repeat scroll 0 0 #ABABAB"); $.post("请求后台",{num:nm},function(data){ var da = $.evalJSON(data); if(da.success=="true"){ switch(parseInt(da.type)){ case -1://异常情况 $("#getActivity").css("display","none");//隐藏领取界面 $("#ExceptionActivity").css("display","inline");//显示失败界面 break; case 0://领取失败 $("#getActivity").css("display","none");//隐藏领取界面 $("#bustActivity").css("display","inline");//显示失败界面 $("#buttonClass").css("background","none repeat scroll 0 0 #ABABAB"); timeRun60(); break; case 1://已经领取过 $("#presented").css("display","inline"); $("#getActivity").css("display","none");//隐藏领取界面 //window.location.href="请求后台"; break; case 2://领取成功 $("#getActivity").css("display","none");//隐藏领取界面 $("#trueActivity").css("display","inline");//显示界面 timeRun30(); break; } }else{ //领取失败进入再次领取界面 $("#getActivity").css("display","none");//隐藏领取界面 $("#bustActivity").css("display","inline");//显示失败界面 $("#buttonClass").css("background","none repeat scroll 0 0 #ABABAB"); timeRun60(); } }); }catch(e){//异常情况 $("#getActivity").css("display","none");//隐藏领取界面 $("#ExceptionActivity").css("display","inline");//显示失败界面 } } //3秒后跳转 function fn30() { var num = document.getElementById('numTime'); var n = num.innerHTML; if (--n) { num.innerHTML = n; setTimeout(fn30, 1000); } if(n==1){ queryShare(); } } //60秒后跳转 function fn60() { var num = document.getElementById('numTime60'); var n = num.innerHTML; if (--n) { num.innerHTML = n; setTimeout(fn60, 1000); } if(n==1){ window.location.href="请求后台"; } } //60秒后跳转 function timeRun30(){ setTimeout(fn30, 1000); } //3秒后跳转 function timeRun60(){ setTimeout(fn60, 1000); } //直接跳转到分享界面 function queryShare(){ $("#trueActivity").css("display","none");//隐藏界面 window.location.href="请求后台"; } </script> </head> <body> //省略各种代码 </body> </html>
代码有一些多,不过这样才能与下面的诡异现象成对比,请看下面Firebug观察的代码,有图有真像
A.html
点击请求地址通过服务器跳转到B.jsp页面,如下图:
问题已经说出来了,在网上搜了一下也没有找到解决方法,最后自己在调试与解决过种中,将服务器上存放A.html页面文件夹下的JS与CSS样式删除, 这些样式与JS是A.html页面所依赖的,不过删除就好了,我只好把样式与JS文件放到Tomcat当中,将A.html页面当中的引用路径改成绝对路 径。这样问题就解决了。自己笔记一下。
相关推荐
在创建跳转页面时,`<a>`标签是实现页面跳转的关键,通过设置`href`属性指定目标URL。例如: ```html 点击跳转 ``` 如果想要添加一些交互性,比如计时自动跳转,可以结合JavaScript来实现。例如,以下代码会在5秒后...
这种方式同样可以用来改变当前窗口的URL,从而达到页面跳转的目的。 #### 五、通过弹窗提示并进行页面跳转 **示例代码:** ```javascript alert("是否确定?"); top.location = 'xx.jsp'; ``` **解析:** ...
在JavaScript中,我们可以使用`window.location`对象来改变当前窗口的URL,从而实现页面跳转。例如,如果检测到IE版本低于某个阈值,可以这样编写代码: ```javascript var userAgent = navigator.userAgent; var ...
在表单中,通过设置action属性指定页面跳转的目标URL地址,然后通过JavaScript脚本在页面加载时即提交表单,从而达到自动跳转的目的。示例如下: ```html <!-- document.myform.submit(); --> ***" method="post...
这段代码会立即改变当前窗口或框架的URL,从而实现页面跳转。 如果希望页面在一段时间后自动跳转,可以使用HTML的`<meta>`标签,设置http-equiv属性为"refresh",content属性包含两个值,第一个是延迟时间(秒),...
在PHP编程中,页面跳转是一种常见的操作,用于在用户执行特定操作后引导他们到新的页面。有时,我们可能希望在跳转之前等待一段时间,这就是所谓的延时跳转。这通常用于显示一些提示信息,或者让用户有时间阅读完...
在web开发中,页面跳转是一个常见的需求,它指的是在用户完成某个操作后,自动或者响应用户的某个命令,将浏览器从当前页面引导到另一个页面。通常情况下,页面跳转会使用JavaScript来实现,例如通过修改window....
这对于不同场景的应用非常灵活,无需编程知识就能实现跳转目的的改变。例如,如果需要将用户引导至一个新的登录页面或者特定的产品详情页,只需在源代码中找到相关的链接字段并更新即可。 标签“软件/插件”表明这...
默认的ItemRenderer可能无法满足所有需求,因此开发者通常需要创建自定义的ItemRenderer来改变单元格的外观和行为,比如在本例中可能是为了呈现更丰富的播表信息。 4. **背景色设置**: DataGrid的背景色可以通过...
总之,jQuery 的 `.get` 方法不会自动导致页面跳转,因为它设计为异步加载数据。若需实现跳转,应将跳转逻辑放入 `.get` 的回调函数中,通过修改 `document.location.href` 或 `window.location.href` 来实现。这将...
网页跳转是网络编程中常见的技术,用于在用户访问一个页面后自动导向另一个页面。这里主要介绍了三种不同的网页跳转方式,适用于不同的场景。 1. 服务器端跳转: 在服务器端进行跳转通常使用服务器端脚本语言实现...
这个操作的目的是在处理完Lotusscript代理逻辑后,引导用户到一个新的Web页面,可能是为了显示处理结果,或者进行后续的操作。这种做法常见于业务流程自动化或数据处理的应用场景中。 总的来说,这个Lotus Domino的...
- 根据判断结果改变`领料`变量的值,从而控制显示不同的提示信息。 #### 三、隐藏跳转功能解析 除了密码验证外,有时候还需要实现某些功能的隐藏跳转,比如只有在特定条件下才能进入下一个页面。 ##### 1. 隐藏...
这个插件的目的是在用户访问Emlog的文章页面时,自动将他们重定向到预先设定的特定网址,可能是为了推广某个网站、转移流量或者实现其他特定目的。 【描述】"emlog文章页跳转到指定网址插件【源码资源】下载整理....
转发通常用于同一个Web应用内部的页面跳转,可以传递请求对象和会话对象,让接收转发的组件能获取到请求中的信息。 在实现文件下载时,如果不想通过JSP页面或Servlet来直接处理下载,可以配置web.xml文件来识别文件...
这种类型的代码通常被用于网站的各种目的,比如广告链接、重定向、或者用户在特定操作后自动转到其他页面等。 描述中的"content是跳转时间用法就是域名/go.php?url=跳转地址",揭示了跳转机制的关键部分。`content`...
在iOS中,可以利用CADisplayLink或NSTimer配合页面控制器的动画方法来达到相同目的。 在实现自动循环轮播时,还需要考虑以下几个关键点: 1. **无限循环**:为了实现无缝轮播,我们需要处理数组边界的问题。当到达...
而在iOS设备上,如果在QQ环境中,直接通过`location.href`改变页面地址,跳转到指定的红包领取URL。如果不在QQ环境,关闭当前窗口。 `onAutoinit()`函数是整个流程的入口,它会根据设备类型和浏览器环境,调用相应...
本项目标题为“WPF自动分页控件”,是利用Visual Studio 2010和.NET Framework 4.0进行开发的,主要目的是提供一个简便的方式来对数据进行分页显示,减轻UI线程负担,同时允许用户以直观的方式浏览和操作大量数据。...
Swift中的启动页面轮播器就是实现这一目的的有效工具。本文将深入探讨如何使用Swift来构建一个显示当前页面并带有“立即体验”按钮的启动页轮播器。 首先,我们需要了解Swift的基础知识。Swift是由Apple开发的一种...