IE 8 iFrame仅在第一次加载时导致JavaScript错误

IE 8 iFrame仅在第一次加载时导致JavaScript错误,javascript,internet-explorer,iframe,Javascript,Internet Explorer,Iframe,我在页面上使用iframe,它由一个带有输入元素的表单组成。 每个输入元素都有一个onblur()事件,用于验证输入 当我用新清除的缓存在IE8中打开页面时,它会产生如下javascript错误 document.getElementById(...)' is Null or not an Object 但是,当我检查表单时,它会被完全加载,并且呈现我试图访问的表单。 此外,当我重新加载整个页面时,我不会再收到任何错误。 另外,当我自己加载iframe的内容时,我也不会出错 Firefox和C

我在页面上使用iframe,它由一个带有输入元素的表单组成。 每个输入元素都有一个onblur()事件,用于验证输入

当我用新清除的缓存在IE8中打开页面时,它会产生如下javascript错误

document.getElementById(...)' is Null or not an Object
但是,当我检查表单时,它会被完全加载,并且呈现我试图访问的表单。 此外,当我重新加载整个页面时,我不会再收到任何错误。 另外,当我自己加载iframe的内容时,我也不会出错

Firefox和Chrome根本不会抛出错误

简而言之,我得到的Javascript错误只发生在IE中,并且只发生在我使用iframe显示表单时(这是必需的),并且只发生在第一次加载页面时

有没有办法解决这个问题

我希望它不会让人读起来太混乱

编辑:

document.getElementById("vHint_"+fieldName).innerHTML=data;
FieldName是输入字段的id。数据是验证的返回值。 在这种情况下,数据是图像标记。 每个输入字段后面都有一个id为“vHint_u2;”+fieldName的范围标记

活动的附件如下所示:

<input id="Jahr" class="input" type="text" onblur="validDate(this,'Jahr','_beginn')" maxlength="4" style="width:32px" value="" name="Jahr">

首先感谢您的努力。 user13500提供的示例工作得非常出色。 这让我挖得更深

我找到了解决办法

所有输入字段都是使用自制的ASP框架创建的,该框架将所有输入字段都放在会话中。 iframe中输入字段的onblur()事件触发对ASP文件的AJAX请求,并将输入字段的名称作为请求参数传递。ASP文件现在尝试在会话中查找字段并检索其值以验证输入。 之后,结果被发布回javascript文件,该文件随后使用
document.getElementById(“vHint_”+fieldName”).innerHTML=data
将结果发布回页面

这通常不会出错。 但是,由于应用程序在iframe中运行,并且周围页面的域和iframe中的应用程序不同,因此IE拒绝iframe的会话。因此,ASP验证的结果为空,因为它在会话中找不到字段

在了解到唯一需要做的事情是在应用程序中添加这行代码之后:

Response.AddHeader "P3P", "CP=""CAO PSA OUR"""
这样IE就不再拒绝应用程序的会话。
也许这对其他人也有用

因此,
onload
您通过
getElementById()
执行循环,并附加
onblur
,这就是错误发生的地方?onblur是在用户在inputs元素中输入数据后触发的。然后验证输入,然后使用getElementById()来显示输入是否正确。是否可以在错误出现的地方添加用于getElementId()的代码是的,但是错误在何时何地出现?加载、第一次模糊等。脚本驻留在哪里?在iframe或DOM中。它是附加在标题、内联脚本还是外部脚本中?如何和在哪里?错误是由什么触发的?-如果你能举一个最简单的例子,例如,那可能会非常有帮助。脚本位于iframes内容的开头部分。该事件由用户填写数据触发。因此,错误发生在第一个onblur()事件上