这是Internet Explorer 7和8中的一个问题,只有在通过JSONP触发访问节点值的代码时才会出现这种情况:
的test.html
<html>
<body>
<span>testing</span>
<a href="http://www.google.com">Google</a>
<script type="text/javascript">
window.attachEvent('onload', function() {
var script = document.createElement('script');
script.setAttribute('src', 'test.js');
script.setAttribute('type','text/javascript');
var head = document.getElementsByTagName('head');
head[0].appendChild(script);
});
</script>
</body>
</html>
test.js
alert(document.body.childNodes[0].childNodes[0].nodeValue);
首次加载页面时,警报会按预期显示“正在测试”。但是,在按下链接然后使用浏览器后退按钮后,警报突然显示“ testi”。
为什么这是合适的解决办法?
答案 0 :(得分:0)
test.html部分没问题。
<html>
<body>
<span>testing</span>
<a href="http://www.google.com">Google</a>
<script type="text/javascript">
window.attachEvent('onload', function() {
var script = document.createElement('script');
script.setAttribute('src', 'test.js');
script.setAttribute('type','text/javascript');
var head = document.getElementsByTagName('head');
head[0].appendChild(script);
});
</script>
</body>
</html>
test.js应该是
alert(document.body.children[0].childNodes[0].nodeValue);