问题描述
我在articlelist.jsp主页面中通过iframe标签内嵌maketree.jspmaketree.jsp引入外部文件:<linkrel="StyleSheet"href="dtree.css"type="text/css"/><scripttype="text/javascript"src="js/jquery-1.11.1.min.js"></script><scripttype="text/javascript"src="dtree.js"></script>articlelist.jsp中<iframeid="childframe"style="height:100%;width:100%"src="maketree.jsp"frameborder="0"></iframe>可最终的效果是:能显示树形菜单,但菜单没有应用dtree.css,字体特别大,超链接有下划线我尝试过在articlelist.jsp也加入dtree.css和dtree.js,但不起作用articlelist.jsp引入的css文件:<linkhref="bootstrap/css/bootstrap.min.css"rel="stylesheet"><linkhref="css/bootstrap-datetimepicker.min.css"rel="stylesheet"media="screen"><linkhref="css/main.css"rel="stylesheet"><linkhref="css/dashboard.css"rel="stylesheet"><linkhref="css/font.css"rel="stylesheet"><linkrel="StyleSheet"href="dtree.css"type="text/css"/>之前我没用iframe而是直接将dtree写在articlelist.jsp时,没有出现这样的问题
解决方案
解决方案二:
PS:本项目是基于struts2框架maketree.jsp里采用的是AJAX调用对应的action从数据库中返回树形菜单各节点信息,主要代码如下:<body><scripttype="text/javascript"language="javascript"charset="utf-8">d=newdTree('d');varurl="Login!gettree.action";$.post(url,function(res){vari,url,url2;varurlroot="javascript:window.parent.manageclassify(0,'分类')";d.add(0,-1,'分类',urlroot);for(i=0;i<res.length;i++){url="javascript:window.parent.manageclassify("+res[i].id+",'"+res[i].title+"')";url2="javascript:window.parent.displaycontent('"+res[i].title+"')";if(res[i].isarticle==0){d.add(res[i].id,res[i].parentid,res[i].title,url,'','',res[i].img,'');classifylist[classifylist.length]=res[i].title;}else{d.add(res[i].id,res[i].parentid,res[i].title,url2,'','',res[i].img,'');}}document.write(d);d.closeAll();setdata();});</script></body>
解决方案三:
PPS:在maketree.jsp中如果不用ajax,直接写dtree的demo,则dtree.css起作用了
解决方案四:
找到解决方法了,将maketree.jsp中$.post设置为同步请求$.ajaxSetup({async:false});不过原理还是不太清楚,求指教