Frits 能够找出您的问题,这很好。我肯定会接受他的建议并迅速放弃使用body onload
.
例如:
(function run(){
var data = '{"id":1,"name":"Joe Smith","data":{"email":"smith@gmail.com","phone":"555-123-4567","title":"CFO","instanceControllerTagLibraryApi":{"developmentMode":false}},"children":[],"instanceControllerTagLibraryApi":{"developmentMode":false}}';
function init(){
console.log(data, JSON.parse(data));
}
if (window.addEventListener) {
window.addEventListener('load', init);
} else if (window.attachEvent) {
window.attachEvent('load', init);
}
})();
http://jsfiddle.net/userdude/eQRBk/1/
注意使用window.addEventListener
(以及window.attachEvent
旧 IE 版本的遗留)。这console.log
在 Chrome 和 Firebug 中效果更好;在我看来,IE 的控制台在记录对象方面有点令人沮丧。
使用你所提供的,你可以(我建议应该)以不同的方式处理它。但是,请原谅我,我对 Java 并不那么精通,我只知道 JSP(几乎不知道)。所以...?
<%
String jsonString = "'{\"id\":1,\"name\":\"Joe Smith\",\"data\":{\"email\":\"smith@gmail.com\",\"phone\":\"555-123-4567\",\"title\":\"CFO\",\"instanceControllerTagLibraryApi\":{\"developmentMode\":false}},\"children\":[],\"instanceControllerTagLibraryApi\":{\"developmentMode\":false}}'";
%>
<script>
(function run(){
var data = <%=jsonString%>;
function init(){
console.log(data, JSON.parse(data));
}
if (window.addEventListener) {
window.addEventListener('load', init);
} else if (window.attachEvent) {
window.attachEvent('load', init);
}
})();
</script>
然后您可以将该 JSP 页面插入到head
or 中body
,它会正常工作。我还想象您可以将其设置为将该数据动态注入到 JSP 页面中。但是,就像我说的,我有点在这里挥手。