gpt4 book ai didi

javascript - IE 8 iFrame 仅在首次加载时导致 JavaScript 错误

转载 作者:行者123 更新时间:2023-11-28 01:34:01 26 4
gpt4 key购买 nike

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

当我在 IE 8 中使用新清除的缓存打开页面时,会产生如下 JavaScript 错误。

document.getElementById(...)' is Null or not an Object

但是,当我检查表单时,它已完全加载并且我尝试访问的内容已呈现。此外,当我重新加载整个页面时,我不再收到任何错误。另外,当我单独加载 iframe 的内容时,我也不会收到错误。

Firefox 和 Chrome 根本不会抛出错误。

简而言之,我遇到的 Javascript 错误仅发生在 IE 中,并且仅在我使用 iframe 来显示表单(这是强制性的)时以及仅在第一次加载页面时发生。

关于如何解决这个问题有什么想法吗?

我希望阅读起来不会太困惑。

编辑:

document.getElementById("vHint_"+fieldName).innerHTML=data;

FieldName 是输入字段的 ID。 Data是验证的返回值。在这种情况下,数据是图像标签。每个输入字段后面都有一个 ID 为“vHint_”+fieldName 的 span 标签。

事件的附加方式如下:

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

最佳答案

首先感谢您的努力。user13500 提供的示例非常有效。这让我更深入地挖掘。

我找到了解决方案。

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

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

发现唯一需要做的就是在应用程序中添加这行代码:

Response.AddHeader "P3P", "CP=""CAO PSA OUR"""

这样 IE 就不会再拒绝应用程序的 session 了。也许这对其他人也有用。

关于javascript - IE 8 iFrame 仅在首次加载时导致 JavaScript 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21748902/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com