2012-04-26 109 views
2

在我的magento代碼1文件中。 文件名 - header.phtml錯誤「未定義」爲空或不是Internet Explorer中的對象

我得到像'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; 
} 
+0

在上述行中,試着看frameId的值,恐怕它是空的。 – 2012-04-26 06:12:49

+0

似乎'frameId'不是指定一個字符串,而是'undefined'(可能)。 'qs'的價值是什麼?它應該是什麼? 'parseQueryString'做了什麼,它應該返回什麼? – RobG 2012-04-26 06:21:50

+0

警報(qs); - > return [object object] alert(frameId); - >返回undefined,之後錯誤框打開。警報(hashIndex);根本不執行。 – dayana 2012-04-26 06:45:51

回答

1

「未定義」是空或不是對象意味着您在調用任何方法的Java腳本對象,要麼是空或不支持該特定方法的值。

在這種情況下 var frameId = qs["frameId"];我覺得這個返回null

,你可以看到什麼QS包含和是否有與frameid關鍵

+0

警報(qs); - > return [object object] alert(frameId); - >返回undefined,之後錯誤框打開。警報(hashIndex);根本不執行。 – dayana 2012-04-26 06:45:20

+0

正確,這意味着,qs是一個對象,但是,frameid不是該數組中的對象,可能是您可以使用任何調試器來查看您需要的內容,是否將此站點託管在某處,以便我們可以查找並嘗試以幫助你在那裏 – 2012-04-26 06:56:47

+0

是的,只是檢查,其相同的問題沒有名爲frameId的元素,但一個令人困惑的事實,我注意到了什麼,該窗口的網址是http://www.cloudcommons.com/#http: //www.cloudcommons.com/c/iframe/proxy?p_l_id=10519&p_p_id=48_INSTANCE_sWi2,這意味着沒有任何名稱frameId,這就是爲什麼它不是bieng填充的原因 – 2012-04-26 07:16:17

0

關聯的所有值嘗試

console.debug(qs); 
在Firefox

或Chrome,並檢查該目的。您不僅會確認對象中是否具有frameId屬性,還可以檢查該對象的所有內容,並且可能會在不同的對象關鍵字中查找您要查找的信息。

3

indexOf在IE中不受支持。您將需要編寫自己的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; 
    }; 
+0

不錯的收穫!非常感謝! – nowiko 2016-11-23 07:51:35

相關問題