1

在 onkeyup 事件期间,我正在从位于父级中的 iframe 调用位于父级窗口中的 Javascript 函数。IE 抱怨并且 IE8 中内置的调试器停止并突出显示此代码中的“if 块”说 - “对象不支持这种属性或方法”

PS - 这段代码在 FF 中有效!

     <td class="grid" align="left">
     <input type="text" name="invqty${topitem.itemIdentifier}-<c:out value = "1"/>"
        id="invqty${topitem.itemIdentifier}-<c:out value = "1"/>" 
        value="0" 
        onFocus="this.select()" 
        onkeyup="if(!parent.validateFloat(this.id)) { this.value = '0'; } 
                 else { parent.updateBalance(${topitem.itemIdentifier}); }">
     </td>

有人有想法么?

4

3 回答 3

0

您的name属性中有无效字符。阅读此处以进一步了解有效字符。

于 2012-08-03T18:05:55.953 回答
0

您是否像从“file://”一样在本地运行此设置?那是行不通的。IE 对本地运行的文件的 iframe 通信具有非常严格的安全模型。您需要通过 Web 服务器运行它。

于 2012-08-03T18:46:49.427 回答
0

哇!!!所以问题是这样的——

我在 iframe 中定义了大约 5 个函数。它们都发生在一个“脚本块”中

其中一个功能是使用“for each”循环。这 5 个函数之一中的一个循环导致 IE 忽略了我正在执行此操作的整个“脚本块”。关键是 IE8 中的调试器告诉我问题出在一些虚假的行号上,这让我认为我的 iframe 以及我如何尝试定义我的 JS 函数存在问题。最后,我放弃了,去请有 MAC 的人使用 Safari 进行调试。Safari 调试器使用 for each 循环确定了确切的行。我评论说,对于每个循环代码,IE 也开始工作了!

逆天!

IE8 浏览器调试器的开发人员应该因为他们的无能而被用尺子殴打。我在这上面浪费了 3 天。对 Apple 的窥视者表示敬意。

在这里学到的教训——

编写 Javascript 时不要使用“for each”循环!不要使用 Microsoft IE 品牌的调试器!他们很糟糕,会浪费你的时间。

感谢您的帮助 Bergi 和 Nivas!

于 2012-08-06T16:02:19.090 回答