关于浏览器兼容性 dojo和jquery同时在IE内核用发生了冲突,控制台没有任何错误信息,而且js插件也都加载进来了。每次我断点调试的时候,提示进程被占用。不解!!而在谷歌内核中完美运行。不知道有什么好的解决办法,求指教!浏览器dojoiegooglejquery 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 估计不是dojo 与 jquery冲突,有可能jquery的$函数被别的其它函数覆盖了。根据这个办法检查一下:http://bbs.csdn.net/topics/390388107#post-393876366看看是不是这个原因。 现在把其他组件全部delete掉了,项目里面只有dojo,还是在IE不显示、求解?? 我现在只用dojo还是不显示。求解? 我常用 dojo. 有少数的浏览器兼容问题。你如给出更详细的信息(特别是只用dojo时的),或许可以帮忙。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>管理员页面</title> </head> <LINK href="css/images/Default.css" type=text/css rel=stylesheet> <LINK href="css/images/xtree.css" type=text/css rel=stylesheet> <LINK href="css/images/User_Login.css" type=text/css rel=stylesheet> <style type="text/css"> @import "js/dojo/resources/dojo.css"; @import "js/dijit/themes/tundra/tundra.css"; @import "js/dojox/grid/resources/tundraGrid.css";</style> <script type="text/javascript" djConfig="parseOnload: true,isDebug: false" src="js/dojo/dojo.js"></script> <script type="text/javascript" src="js/mytools/navigationGrid.js"></script> <script type="text/javascript" src="js/mytools/myBlockUI.js"></script> <script type="text/javascript" src="js/mytools/util.js"></script> <script type="text/javascript" src="js/mytools/init.js"></script> <script type="text/javascript" src="js/mytools/user.js"></script> <script type="text/javascript" src="js/mytools/settle.js"></script> <body class="tundra" id="userOperation_body"> <table border="1" width="1480px" height="906px"> <tr> <td width="56px"> <div style="margin-top:-425px"><div id="tree"></div></div> </td> <td width="1050px"> <div id="user" style="display: block;margin-left:50px;margin-top: -362px"></div> <div id="settle" style="display: block;margin-left:50px;margin-top: -320px"></div> <div id="test" style="display: block;margin-left:50px;margin-top: -320px"></div> </td> </tr> </table> </body></html> 在 body 里没有任何 dojo binding attribute, 显然你的 dojo 的引用都在某个 js/mytools/xxxx.js 里,得看这部分才有可能分析。 /* * 导入dojo组件 * * *///dojo.require("navigationGrid");dojo.require("dijit.Tree");dojo.require("dojo.data.ItemFileWriteStore");dojo.require("dojo.data.ItemFileReadStore");dojo.require("dijit.form.FilteringSelect");dojo.require("dojo.parser");dojo.require('dijit.Dialog');// 首页初始化function init() { var treeData = { items : [ { id : '1', name : '管理员选项', type : 'one', children : [ { _reference : '1_1' }, { _reference : '1_2' } ] }, { id : '1_2', name : '结算管理', type : 'two' }, { id : '1_1', name : '用户管理', type : 'two' }, { id : '2', name : '二级选项', type : 'one' }, { id : '3', name : '一级选项', type : 'one' } ], identifier : 'id', label : 'name' }; var treeStore = new dojo.data.ItemFileReadStore( { data : treeData }); var _tree = new dijit.Tree( { id : 'tree', store : treeStore, query : { type : 'one' }, labelAttr : 'id', typeAttr : 'type' }, dojo.byId('tree'));}function openNode(msg) { var node = msg.node; if (msg.event == "toggleOpen") return; if (node.label == '结算管理') { dojo.xhrGet( { url : "settle.html", load : function(response, ioArgs) { try { dojo.query("#user")[0].style.display = "none"; dojo.query("#settle")[0].style.display = "block"; dojo.query("#settle")[0].innerHTML = response; dojo.addOnLoad(settle); return response; } catch (e) { console.info(e + ''); } } }); } else if (node.label == '用户管理') { dojo.xhrGet( { url : "user.html", load : function(response, ioArgs) { try { dojo.query("#settle")[0].style.display = "none"; dojo.query("#user")[0].style.display = "block"; dojo.query("#user")[0].innerHTML = response; dojo.addOnLoad(initUserList); return response; } catch (e) { console.info(e + ''); } } }); } else if (node.label == '一级选项') { }}dojo.addOnLoad(init);dojo.subscribe("tree", null, "openNode"); 我以前同时用dwr和jquery也出现过这种情况,也是IE出不来效果,其他浏览器都可以。网上查了下,说是 $ 符号被占用导致解析不了。要重写jquery或dwr的库重新定义一个符号。但是jqeury的兼容性很强,一般不会出现什么兼容性问题。后来在jsp页面把dwr和jquery的库导入顺序改了。结果就可以了 看了一下这段代码:Line 70: warning: 'settle' is undefined. dojo.addOnLoad(settle);Line 85: warning: 'initUserList' is undefined. dojo.addOnLoad(initUserList);检查一下,这两个变量是否运行时前面定义了。(我想你大概是应该是在别处定义了,只是没有贴在这里)。关于 dojo.addOnLoad 我经历过一个 IE 专有的 bug. 但不是 dojo 1.8, 是更老的版本。解决方法如下,供你参考:把你的所有对 dojo.addOnLoad 的引用,加一个 wrapper 去 catch the exception//假设你原有代码:dojo.addOnLoad(foo);//改为dojo.addOnLoad(function(){ try { foo(); } catch(e) { }}); JS能不能实现单击某个按钮的功能? 请高人给小弟讲述下这句话的意思```[正则表达式] 如果利用JavaScript读取windows剪贴板中的文件信息 天啊!这个该怎么理解啊! jquery插件学习之选项卡 新手求建议 (正则表达式)如何将主体内容的最后一个空行去掉? 如何将按钮变灰? 如何切换浏览器窗口? 还是JAVASCRIP调用JAVA CLASS的问题 jQuery UI 可拖拽部件的几个问题 解析xml 在IE下是对的 在Chrom下是错的 为什么??? JQuery中的show()方法激活了什么事件?
根据这个办法检查一下:
http://bbs.csdn.net/topics/390388107#post-393876366
看看是不是这个原因。
,项目里面只有dojo,还是在IE不显示、
求解??
求解?
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>管理员页面</title>
</head>
<LINK href="css/images/Default.css" type=text/css rel=stylesheet>
<LINK href="css/images/xtree.css" type=text/css rel=stylesheet>
<LINK href="css/images/User_Login.css" type=text/css rel=stylesheet>
<style type="text/css">
@import "js/dojo/resources/dojo.css";
@import "js/dijit/themes/tundra/tundra.css";
@import "js/dojox/grid/resources/tundraGrid.css";</style>
<script type="text/javascript" djConfig="parseOnload: true,isDebug: false"
src="js/dojo/dojo.js"></script>
<script type="text/javascript" src="js/mytools/navigationGrid.js"></script>
<script type="text/javascript" src="js/mytools/myBlockUI.js"></script>
<script type="text/javascript" src="js/mytools/util.js"></script>
<script type="text/javascript" src="js/mytools/init.js"></script>
<script type="text/javascript" src="js/mytools/user.js"></script>
<script type="text/javascript" src="js/mytools/settle.js"></script>
<body class="tundra" id="userOperation_body">
<table border="1" width="1480px" height="906px">
<tr>
<td width="56px">
<div style="margin-top:-425px"><div id="tree"></div></div>
</td>
<td width="1050px">
<div id="user" style="display: block;margin-left:50px;margin-top: -362px"></div>
<div id="settle" style="display: block;margin-left:50px;margin-top: -320px"></div>
<div id="test" style="display: block;margin-left:50px;margin-top: -320px"></div>
</td>
</tr>
</table>
</body>
</html>
在 body 里没有任何 dojo binding attribute, 显然你的 dojo 的引用都在某个 js/mytools/xxxx.js 里,得看这部分才有可能分析。
/*
* 导入dojo组件
*
* */
//dojo.require("navigationGrid");
dojo.require("dijit.Tree");
dojo.require("dojo.data.ItemFileWriteStore");
dojo.require("dojo.data.ItemFileReadStore");
dojo.require("dijit.form.FilteringSelect");
dojo.require("dojo.parser");
dojo.require('dijit.Dialog');// 首页初始化
function init() {
var treeData = {
items : [ {
id : '1',
name : '管理员选项',
type : 'one',
children : [ {
_reference : '1_1'
}, {
_reference : '1_2'
} ]
}, {
id : '1_2',
name : '结算管理',
type : 'two'
}, {
id : '1_1',
name : '用户管理',
type : 'two'
}, {
id : '2',
name : '二级选项',
type : 'one'
}, {
id : '3',
name : '一级选项',
type : 'one'
} ],
identifier : 'id',
label : 'name'
};
var treeStore = new dojo.data.ItemFileReadStore( {
data : treeData
});
var _tree = new dijit.Tree( {
id : 'tree',
store : treeStore,
query : {
type : 'one'
},
labelAttr : 'id',
typeAttr : 'type'
}, dojo.byId('tree'));
}
function openNode(msg) {
var node = msg.node;
if (msg.event == "toggleOpen")
return;
if (node.label == '结算管理') {
dojo.xhrGet( {
url : "settle.html",
load : function(response, ioArgs) {
try {
dojo.query("#user")[0].style.display = "none";
dojo.query("#settle")[0].style.display = "block";
dojo.query("#settle")[0].innerHTML = response;
dojo.addOnLoad(settle);
return response;
} catch (e) {
console.info(e + '');
}
}
});
} else if (node.label == '用户管理') {
dojo.xhrGet( {
url : "user.html",
load : function(response, ioArgs) {
try {
dojo.query("#settle")[0].style.display = "none";
dojo.query("#user")[0].style.display = "block";
dojo.query("#user")[0].innerHTML = response;
dojo.addOnLoad(initUserList);
return response;
} catch (e) {
console.info(e + '');
}
}
}); } else if (node.label == '一级选项') {
}
}
dojo.addOnLoad(init);
dojo.subscribe("tree", null, "openNode");
网上查了下,说是 $ 符号被占用导致解析不了。要重写jquery或dwr的库重新定义一个符号。
但是jqeury的兼容性很强,一般不会出现什么兼容性问题。
后来在jsp页面把dwr和jquery的库导入顺序改了。结果就可以了
看了一下这段代码:
Line 70: warning: 'settle' is undefined.
dojo.addOnLoad(settle);Line 85: warning: 'initUserList' is undefined.
dojo.addOnLoad(initUserList);检查一下,这两个变量是否运行时前面定义了。(我想你大概是应该是在别处定义了,只是没有贴在这里)。关于 dojo.addOnLoad 我经历过一个 IE 专有的 bug. 但不是 dojo 1.8, 是更老的版本。
解决方法如下,供你参考:把你的所有对 dojo.addOnLoad 的引用,加一个 wrapper 去 catch the exception//假设你原有代码:
dojo.addOnLoad(foo);//改为
dojo.addOnLoad(function(){
try {
foo();
} catch(e) {
}
});