错误“未定义”为空或不是Internet Explorer中的对象

时间:2012-04-26 06:08:22

标签: javascript internet-explorer magento

在我的magento代码中有1个文件。 文件名 - header.phtml

我得到的错误就像'undefined'是null或不是对象。

如果我从IE本身调试该页面,那么它将破坏“var hashIndex = frameId.indexOf('#');”中的代码来自以下代码。

function getFrameId()
{
    var qs = parseQueryString(window.location.href);
    var frameId = qs["frameId"];

    var hashIndex = frameId.indexOf('#');

    if (hashIndex > -1)
    {
        frameId = frameId.substring(0, hashIndex);
    }

    return frameId;
}

3 个答案:

答案 0 :(得分:3)

IE中不支持indexOf。您需要编写自己的indexOf函数。例如:

//Implement indexOf. (IE/mshta doesn't have it)
if (!Array.prototype.indexOf) {
    Array.prototype.indexOf = function (obj, fromIndex) {
    if (fromIndex == null) {
        fromIndex = 0;
    } else if (fromIndex < 0) {
        fromIndex = Math.max(0, this.length + fromIndex);
    }
    for (var i = fromIndex, j = this.length; i < j; i++) {
        if (this[i] === obj)
            return i;
    }
    return -1;
  }; 

答案 1 :(得分:1)

'undefined'为null或不是对象意味着您调用任何方法的java脚本对象为null或不支持该特定方法的值。

在这种情况下var frameId = qs["frameId"];我认为这返回null,你能看到qs包含什么以及是否有与frameid key相关的任何值

答案 2 :(得分:0)

尝试

 console.debug(qs); 

在firefox或chrome中检查该对象。您不仅会确认对象中是否有frameId属性,而且还能够检查该对象的所有内容,并且可能会在不同的对象键中找到您要查找的信息。