2

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

我收到错误,例如“未定义”为空或不是对象。

如果我从 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;
}
4

3 回答 3

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;
  }; 
于 2012-11-19T03:16:09.623 回答
1

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

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

于 2012-04-26T06:10:56.407 回答
0

尝试

 console.debug(qs); 

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

于 2012-04-26T06:44:18.863 回答