2012-07-01 57 views
0

我想要更新iframe使用javascript的url?iframe dynamic src

像這樣:

<iframe src="http://yahoo.com" id="ifrm" onload="iframeurl()" ></iframe> 
<script> 
function iframeurl() { 
var ifrm = document.getElementById("ifrm"); 
alert(ifrm.src); 
} 
</script> 

,但上面的代碼不起作用。我怎樣才能做到這一點? 我將在iframe中使用外部鏈接,該鏈接不在我使用上述代碼的相同域中。

請幫忙。

謝謝

再次感謝。 http://yahoo.com只是一個例子。再次,我的域名是szacpp.com,我需要獲取other.com的鏈接。你的意思是我需要將htaccess放入other.com,而我沒有訪問該域名。

+0

通過後函數聲明添加iframurl()試試這個。或者將其添加到文檔加載功能上。 –

+0

szacpp - 我已經更新了我的答案,希望這對您有用。 – freefaller

回答

3

iframe中的src屬性將而不是在頁面在iframe內更改時更新。

你唯一的選擇是查詢在iframe的文件,但是如果在iframe頁面來自同一個域只會工作(否則你打same origin policy

UPDATE

IF您有權訪問other.com,那麼您應該可以在.htaccess文件中設置Access-Control-Allow-Origin(假設您使用的是使用該文件系統的服務器)。

你會發現更多的信息.​​.....

如果訪問other.com,那麼你只是運氣不好。您不可能知道新頁面是什麼,因爲iframe的頁面更改時iframesrc屬性將不會更新。由於我(或更確切地說,Quentin)在前面提到的same origin policy,您將無法使用JavaScript。

+0

跨站點腳本是指一類代碼注入漏洞,與跨源數據通信無關。我改變了參考。 – Quentin

+0

Ack,謝謝@Quentin,是的那就是我的意思 – freefaller

+0

您好,昆汀感謝您的快速響應。 你明白我的問題。 我使用.htaccess的行:Header add Access-Control-Allow-Origin *但仍然無法使用。 –

-1

試試這個:

<iframe src="http://yahoo.com" id="ifrm" onload="iframeurl()" ></iframe> 
<script> 
function iframeurl() { 
var ifrm = parent.document.getElementById("ifrm"); 
alert(ifrm.src); 
} 
</script> 
+1

我花了一段時間才找到差異(請在複製/粘貼整個代碼塊時突出顯示更改)。假設這是頂層框架,添加'parent.'將不會有什麼區別。如果它不是頂級框架,它將打破通過其id獲取iframe元素的嘗試。這根本沒有幫助,可能會讓事情變得更糟。 – Quentin

+1

這可能永遠不會工作,因爲iframe對象與腳本位於同一文檔中,因此通過使用「parent」,您指的是文檔的父級,而不是iframe的父級 – freefaller