2012-10-04 79 views
0

對象在Internet Explorer我的代碼工作得很好,但我在Mac上使用Safari,這讓我那個錯誤。這是我的代碼:類型錯誤:「未定義」不是(評估「window.frames [‘內容’] document.location。」)

<!DOCTYPE html> 
<html> 
<head> 
<title>The Me Project</title> 
<link href="me.css" rel="stylesheet" type="text/css" href="me.css" /> 
<script type="text/javascript"> 
function page(setter) 
{ 
    if (setter=="home") 
    { 
     window.frames["content"].document.location.href = "home.html"; 
    } 
    else if (setter=="birth") 
    { 
     window.frames["content"].document.location.href = "birth.html"; 
    } 
    else if (setter=="cool") 
    { 
     window.frames["content"].document.location.href = "cool.html"; 
    } 
    else if (setter=="family") 
    { 
     window.frames["content"].document.location.href = "family.html"; 
    } 
    else 
    { 
     window.frames["content"].document.location.href = "home.html"; 
    } 
} 
</script> 
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
</head> 
<body> 
<div id="header"> 
    <div id="nav"> 
    <h1>Parth's Me Project</h1> 
    <ul> 
    <li><a onclick="page('home')">Home</a></li> 
    <li><a onclick="page('birth')">Birth Year</a></li> 
    <li><a onclick="page('cool')">Cool Things</a></li> 
    <li><a onclick="page('family')">My Family</a></li> 
    </ul> 
    </div> 
</div> 
<div id="main"> 
<iframe src="home.html" name="content" id="content" seamless height="1000" frameborder="0"/> 
</div> 
<frame> 
</body> 
</html> 

如果需要其他頁面,只是告訴我,我想保持相同的頁眉和導航欄,所以我用在底部的iframe。

+1

請提出問題。 –

+0

你會得到「不安全的JavaScript嘗試訪問框架與URL」錯誤? – MikeB

+0

我在Safari或Chrome中沒有遇到這個錯誤。 [小提琴](http://jsfiddle.net/barmar/cqjJZ/) – Barmar

回答

2

該錯誤告訴你,window.frames["content"].document解析爲undefined,因此瀏覽器無法訪問location屬性。

訪問在一個iFrame文檔處於不同的瀏覽器不同,見下文。另外,像這樣鏈接引用不是一個好主意(正如你發現的那樣),因爲它會使調試變得更加困難。

function setIframeHref(iFrameID, href) { 
    var frame, cont, doc; 

    // Firstly, get the iframe 
    frame = window.frames[iFrameID]; 

    // In some versions of IE, frame.document is the document the iFrame 
    // is in, not the document in the iFrame. Also, some browsers 
    // use contentWindow and others contentDocument. 
    // In some browsers, contentDocument points to the iFrame window, 
    // in others to the document, so... 
    if (frame) { 
     cont = frame.contentWindow || frame.contentDocument; 

     // cont might be the iFrame window or the document 
     if (cont) { 
      doc = cont.document || cont; 

     // For current browsers that don't have the above 
     } else { 
      doc = frame.document 
     } 
    } 

    // If have a document, set the vaue of location.href 
    if (doc && doc.location) { 
     doc.location.href = href; 
    } 
} 

請注意,如果HREF不是來自同一個域或子域,則可能仍然存在問題。有些網站不允許他們的頁面在iFrame中顯示,因此一些瀏覽器會拒絕顯示它們,而其他瀏覽器會在新標籤頁或窗口中打開它們。

相關問題