因此,我创建了一个函数来对从AJAX调用中收到的XML文件进行错误检查。验证的一部分是,在我将数据处理为表单时,该函数构建一个对象以便于访问。在FF中,工作就像一种魅力。因错误而死:
对象不支持此属性或方法
下面是函数(减去不重要的位):
function checkReceiveXMLTagString( doc, messageObject, tag ) {
var tag_nodes = doc.getElementsByTagName( tag );
...do some error checking...
messageObject[tag] = tag_str; <-- error occurs on this line
return true;
}下面是函数如何调用的一个示例:
if ( checkReceiveXMLTagString( messageObject.Name[0], messageObject.Name[0], "First" ) ) {
...process messageObject.Name[0].First...
}就像我说的,FF没有问题。Safari也会加载页面。有问题。
谢谢!
发布于 2011-09-20 19:26:40
好像有什么东西使messageObject成为null或undefined
发布于 2011-09-20 20:53:04
如果错误出现在这一行上:
messageObject[tag] = tag_str;那么,我所知道的导致错误的唯一两种方法是:
messageObject不是可以设置属性的对象(null或undefined是happen)tag为空或未定义的的最可能方式)。
因为我看到您的代码调用了这个函数数百次,所以您不能有效地破坏它,所以我建议您使用一些防御性代码来检查这些条件,并将一些内容输出到调试控制台,以确定问题发生时的状态。您甚至可以使用如下代码触发条件断点:
if (!messageObject || !tag) {
debugger;
}在最困难的情况下,您可以在其周围设置一个异常处理程序,并在抛出异常时中断:
try {
messageObject[tag] = tag_str;
} catch(e) {
debugger;
}这两种方法都允许您捕获调试器中的条件,并在发生错误时检查所有参数。
https://stackoverflow.com/questions/7490525
复制相似问题