日期:2014-05-16  浏览次数:20331 次

请教一个关于javascript的问题.
我朋友的机器在访问如下的链接时 IE左下角提示有错误。而打开不了新的页面。
但是在我和其他人的机器上都是可以的。
我查看了源文件是类似如下的javascript代码
<script language="javascript">
<!--
function ForceWindow ()
{
  this.r = document.documentElement;
  this.f = document.createElement("FORM");
  this.f.target = "_blank";
  this.f.method = "post";
  this.r.insertBefore(this.f, this.r.childNodes[0]);
}

ForceWindow.prototype.pop = function (sUrl)
{
  this.f.action = sUrl;
  this.f.submit();
}
window.force = new ForceWindow();
//-->
</script>
[<a class="..." title="..." href="javascript:window.force.pop('...')")">详情...</a>]


我起先以为是因为IE不支持javascript脚本语言导致。查看IE的属性支持所有的脚本功能。也一度怀疑是否是
杀毒导致支持javascript的dll本注销,到网络上查找重新注册的方法,就是注册n多dll的批处理文件。但也没有效果。

后来发现: 在执行某些简单的javascript时是可以执行的:
[<a class="..." title="..." href="javascript:window.close()")">关闭</a>]

请大家分析分析问题可能出在哪里了?

------解决方案--------------------
看不出哪里有问题 可能出现问题的地方有2点
1. this.r.insertBefore(this.f, this.r.childNodes[0]); //如果 r没有子元素可能出错
应该判断一下子元素的数量 再看看是用appendChild还是insertBefore

2.可能是form元素被插入到非body中导致出错. (这个不是很确定,没尝试过这种方式插入form元素)
------解决方案--------------------
第一次看到这种写法,我本地测试没问题,等高人出现吧。