2011-10-02 171 views
3

我想在另一個頁面的iframe中顯示我的網頁。 我的意思是你可以看到helper.html,而你是導航main.php。 但我想更改helper.html中有關main.php中設置的某些條件的一些鏈接。有沒有辦法改變url是iframe?

常規的解決方案是獲取helper.html的內容,並在main.php中處理它,然後回顯它。 但是它是服務器端,我想這個過程是客戶端。

這是可能的JavaScript?

+0

你能更改源代碼兩個文件? – Karolis

回答

1

如果這些文件都在不同的領域,但你對他們有完全控制,然後採用如下方案:

  • 在主要頁面調用帶有GET參數的iframe。例如:

    <iframe src="foo.html?parameter=value" width="400" height="500"></iframe> 
    
  • 在IFRAME解析GET參數使用Javascript並顯示適當的內容:

    // get the current URL 
    var url = window.location.toString(); 
    //get the parameters 
    url.match(/\?(.+)$/); 
    var params = RegExp.$1; 
    // split up the query string and store in an 
    // associative array 
    var params = params.split("&"); 
    var queryStringList = {}; 
    
    for(var i=0;i<params.length;i++) 
    { 
        var tmp = params[i].split("="); 
        queryStringList[tmp[0]] = unescape(tmp[1]); 
    } 
    
    // print all querystring in key value pairs 
    for(var i in queryStringList) 
        document.write(i+" = "+queryStringList[i]+"<br/>"); 
    

    來源:http://www.go4expert.com/forums/showthread.php?t=2163

+0

在這個答案中提供的代碼將打印查詢字符串集合,但當問題談論改變IFrame內的鏈接位置時,這是怎麼回事?另請參閱@Pwaddles回答的提問者評論。 – user961954

+0

@ user961954我的答案解釋瞭如何將數據從主頁傳遞到iframe。這些數據可以是關於需要在iframe中替換的url的信息。然後iframe必須有一個腳本來解析數據並替換所需的url。 – Karolis

1

嘗試......

var myIframe = document.getElementById('SomeIFrame'); 
myIframe.src = 'www.joobworld.com'; 
+0

這可能會改變iframe的src而不是iframe中的href s – John

1

是的,它是可能的,如果兩個框架都在同一個域中。 見樣本功能:在幫助幀鏈接的id被假定爲「鏈接」

function ChangeLink() 
{ 
    var Helpframe = document.getElementById("Helpframe"); 
    var innerDoc = Helpframe.contentDocument || Helpframe.contentWindow.document; 
    var link = innerDoc.getElementById("link"); 
    link.href="http://www.google.com"; 
} 

該解決方案是從Javascript - Get element from within an iFrame

2

啓發如果你的文件都位於同一個域,你可以使用的top.frames屬性,RO指名爲幀的window對象:

假定頂部HTML到具有這樣的結構:

<iframe name="main" /><iframe name="helper" /> 

在main:

top.frames["helper"].document.getElementById("linkID").href = "http://newlink.com"; 

如果您正在使用AJAX,可以在回調處理程序中添加前面所示的代碼。如果main.php在更改時重新加載,則代碼位於<script>標記內。

+0

謝謝。爲什麼它不適用於我的另一個域? – John

+0

[相同來源政策](http://en.wikipedia.org/wiki/Same_origin_policy)可阻止來自不同網域的網頁彼此通信。 –

相關問題