2010-12-05 58 views
4

我有一個網站,我主持自己。我沒有靜態IP地址,因此我的域名所有流量都被屏蔽到我的DDNS帳戶。結果頁面看起來像這樣...如何更改「父」框架的網址?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
    "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
<head> 
    <title>mydomianname.com</title> 
</head> 
<frameset rows="100%,*" border="0"> 
    <frame src="http://myddns.dyndns.org/mydomainname" frameborder="0" /> 
    <frame frameborder="0" noresize /> 
</frameset> 
</html> 

如何在用戶在「子」框架內導航時更新「父」框架的URL?

更新:成功?

我試過這樣做的JavaScript,但有一個問題得到正確的href我的JavaScript函數與不良副作用(有兩個窗口打開,讓我的主窗口到錯誤的位置,或使它所以後退按鈕不能正常工作)。我所需要的只是我的a標記的一個屬性,以保存我可以在我的javascript中使用的值,但根本不會做任何其他操作。將屬性value事件添加到a標記中雖然它不是原生屬性,但它很有用。

a標籤...

<a onclick="url_update(this);" value="test/test.html" href="javascript:void(0);">test link</a> 

以及JavaScript函數...

function url_update(element){ 
    base_url = 'http://mydomain.com/'; 
    window.parent.location.href = base_url + element.getAttribute('value'); 
} 

所產生的更新網址是...

http://mydomain.com/test/test.html 

...和沒有前面提到的副作用。

我想解決的唯一「副作用」是顯示瀏覽器窗口底部信息欄中的鏈接。現在它說javascript:void(0);,因爲這是寫在我的href屬性,但我希望它顯示更新的URL,當鏈接懸停...任何想法?

如果我可以取消所有這些javascript並使用IIS 7 URL Rewrite 2.0來做到這一點,那將會更好......但是我還沒有掌握URL重寫的黑色藝術。

回答

7

的javascript:

window.top.location = 'anther url' 

--update你更新的問題,而不是使用的

element.getAttribute('value')element.value

--update#2 使用href屬性,但是,加return false;到onclick功能:

<a onclick="url_update(this);return false;" value="test/test.html" href="test/test.html">test link</a> 

一旦你這樣做,你可能會跳過藏漢屬性的值,只需使用href屬性,更新您的url_update功能使用element.href代替element.value

+1

你的答案看起來像可能工作,但我需要爲我的網站上的每個鏈接做到這一點。如果我有類似test link的東西,那麼我怎樣才能將`/ test/test.html`傳遞給一個單獨的javascript函數,它將更新每個調用該函數的鏈接? – ubiquibacon 2010-12-05 22:23:15

+1

真棒,我不知道你可以只添加不屬於標籤的屬性!現在我可以使用值而不是濫用`rel`和/或`rev`屬性。當我將鼠標懸停在鏈接上時,您是否也知道如何在瀏覽器窗口底部的信息欄中正確顯示更新的URL? (查看更新後的問題)。 – ubiquibacon 2010-12-06 00:27:49

2

首先你需要在同一個域...否則爲安全的原因,你不能改變它。在你的孩子幀

function change(theUrl){ 

window.parent.reloadContent(theUrl); 
} 

聲明並調用這個函數在您的父母有以下功能:

function reloadContent(theUrl){ 
    if (theUrl != ""){ 
     document.getElementById("frameID").src= theUrl ; 
    } 
} 
4

很難從你的問題告訴到底是哪幀在做什麼,但如果爭球Meister的解決方案適合您,比您可以輕鬆地將您想要的內容添加到每個A標籤中來實現您想要的內容。

target="_top" 

您的示例已修改。

<a href="test/test.html" target="_top">test link</a> 

你也可以做到這一點與jQuery ... 在那裏所有A標籤應該有目標=「_頂」,你可以在網頁上加入下面的jQuery代碼的頁面,它會動態目標增加所有鏈接。

<script language="javascript" type="text/javascript"> 
$(function() 
{ 
    $("A").attr("target","_top"); 
}); 
</script> 

這是假設你有normail與HREF屬性的標籤,你可以擺脫的onclick都在一起,沒有其他JavaScript是需要與目標的解決方案。