我想在另一個頁面的iframe中顯示我的網頁。 我的意思是你可以看到helper.html,而你是導航main.php。 但我想更改helper.html中有關main.php中設置的某些條件的一些鏈接。有沒有辦法改變url是iframe?
常規的解決方案是獲取helper.html的內容,並在main.php中處理它,然後回顯它。 但是它是服務器端,我想這個過程是客戶端。
這是可能的JavaScript?
我想在另一個頁面的iframe中顯示我的網頁。 我的意思是你可以看到helper.html,而你是導航main.php。 但我想更改helper.html中有關main.php中設置的某些條件的一些鏈接。有沒有辦法改變url是iframe?
常規的解決方案是獲取helper.html的內容,並在main.php中處理它,然後回顯它。 但是它是服務器端,我想這個過程是客戶端。
這是可能的JavaScript?
如果這些文件都在不同的領域,但你對他們有完全控制,然後採用如下方案:
在主要頁面調用帶有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/>");
在這個答案中提供的代碼將打印查詢字符串集合,但當問題談論改變IFrame內的鏈接位置時,這是怎麼回事?另請參閱@Pwaddles回答的提問者評論。 – user961954
@ user961954我的答案解釋瞭如何將數據從主頁傳遞到iframe。這些數據可以是關於需要在iframe中替換的url的信息。然後iframe必須有一個腳本來解析數據並替換所需的url。 – Karolis
嘗試......
var myIframe = document.getElementById('SomeIFrame');
myIframe.src = 'www.joobworld.com';
這可能會改變iframe的src而不是iframe中的href s – John
是的,它是可能的,如果兩個框架都在同一個域中。 見樣本功能:在幫助幀鏈接的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";
}
啓發如果你的文件都位於同一個域,你可以使用的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>
標記內。
謝謝。爲什麼它不適用於我的另一個域? – John
[相同來源政策](http://en.wikipedia.org/wiki/Same_origin_policy)可阻止來自不同網域的網頁彼此通信。 –
你能更改源代碼兩個文件? – Karolis