導航:首頁 > IDC知識 > iframe跨域域名相同

iframe跨域域名相同

發布時間:2020-12-07 08:29:40

1、JavaScript 怎麼跨域獲取 iframe 中的內容

要解釋這個問題,首先要解釋兩個技術點。

每個「窗口」都是一個JS Runtime,即JS的運行時。如果只有一個窗口,那麼就只有一個Runtime;如果一個窗口下面還有一個iframe,那麼就有兩個Runtime;以此類推。

Runtime之間互操作(或者通信)是有跨域限制的。也就是說,如果這個窗口本身是a.baidu.com域名下的頁面,那麼如果這個頁面下還有一個iframe,這個iframe中載入的頁面是b.baidu.com域名下的。那麼外層的JS。就不能跟這個iframe中的內容互操作(或者通信)。

因此外層Runtime中的JS想操作內層iframe中的內容,就必須要避免跨域限制。要麼內層iframe載入頁面的域名跟外層是一樣的。要麼就是需要在內層iframe載入的頁面中執行document.domain = 'baidu.com';從而設置跟外層的主域相同。

例如,當前頁面是a.baidu.com/test.html
<html>
<head>
</head>
<body>
<iframe id="iFrm1" src = ""margin: 0px; padding: 0px; color: rgb(69, 69, 69); font-family: arial, 宋體, sans-serif, tahoma, 'Microsoft YaHei'; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-tap-highlight-color: rgba(26, 26, 26, 0.301961); -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;">
iframe中載入的頁面內容如下:
<html>
<head>
</head>
<body>
<div id="innerDiv">恭喜操作到內部iframe中的元素了!!!</div>
<script>
document.domain = 'baidu.com';
</script>
</body>
</html>

在HTML5中新增了postMessage的API。可以方便窗口跟內部iframe之間進行通信,並且可以實現跨主域通信。但是有一些限制,1.老版本的瀏覽器一般不支持。2.父窗口只能向iframe中發送信息,iframe只能收消息,且父窗口不能直接操作iframe中的內容。3.父窗口發送的數據也是有限制的。只能發送基本數據類型或者plain object。

2、如何用js操控iframe引用的跨域網站

<body>
<button id="btn">submit</button>
<iframe src="http://www.baidu.com" id="frame" frameborder="0"></iframe>
</body>
<script>
var btn=document.getElementById('btn');
var fr=document.getElementById('frame');
btn.addEventListener("click", function() {
     fr.contentWindow.location.href="http://www.2345.com";
});
</script>

給按鈕綁定個事件吧 然後執行回iframe.location.href="新聞頁地答址";

3、我的iframe嵌套在別人頁面上,在iframe中ajax訪問自己伺服器也算跨域?

只要是同個域名下的文件(即使不在同個文件夾),就不算跨域。你的parent頁面和iframe頁面的域名相同么?
不同級的域名(如一個為主域名,一個為二級域名)會有跨域問題。

4、如何解決iframe跨域子域名間跨域操作js的問題

建立隱藏iframe前頁面b.html,並前頁定義函數a伺服器端返數據重定向同域頁面(a.html)a.html寫段js執行函數a提取a.html數據obj並數據作參數傳給函數window.parent.a(obj);a.html包含b.html所window.parent.a(obj)其實調用b.html定義a函數硬跨域數據拿

5、如何控制iframe內跨域頁面不打開新頁面

我剛解決過類似的問題 你在子頁寫COOKIE的時候,同時調用這里也保存父頁所版在域的cookie, 然後權你想操作的時候,再調一個,在do文件里判斷和控制JS跳出新窗口. year.明白了嗎? 動動手就可以了. 哈哈,再想一下,哦,原來session也可以啊.

parent.parent.document.getElementById,應該是可以操作的,我之前有一個子頁面操作父級頁面iframe高度的例子,跟你這個比較類似吧,因為你c.html是跟a.html同一個域名的,所以c.html應該是可以操作a.html的內容。

我的思路是:建議你不要在c.html中用定時器監測hash變化,你可以在b.html中操作完畢後,先刪除src為c.html的iframe,完後再重新創建一個iframe,src為c.html,完後通過c.html中的js控制a.html中的內容,比如你可以把值放到a.html中的hidden的input標簽里。我覺得這應該是能夠做到的。

6、js如何操作iframe的跨域問題

A域名下的頁copy面index.htm中內嵌了一個iframe頁面,iframe內引用的是B域名的sub-index.htm頁面,但是為了避免出
現在index.htm頁面中出現滾動條,需要明確知道sub-index.htm頁面的高度和寬度,可是sub-index.htm的頁面內容是不可控的,可能會根據不同用戶頁面大小會不一樣;問題就是如何把sub-index.htm頁面的高度和寬度傳遞給index.htm頁面?

具體解決:
1、在index.htm頁面中聲明一個js函數process(height, width);用來實現設置頁面內iframe的高度和寬度;
2、
在sub-index.htm頁面中再內嵌一個隱藏的iframe,iframe的src指向A域名下的頁面ex.htm?height=xx&
width=yy,該頁面沒有任何內容,只是用來傳遞sub-index.htm頁面載入完之後的寬度和高度這兩個數據的,頁面內js拿到request
中的參數之後直接調用parent.parent.process(height, width);完成對父頁面寬度和高度的設置;
如圖:

7、iframe跨域報告拒絕訪問問題。在項目iframe裡面引入另一個域裡面的一個網頁,就報告沒有許可權和拒絕訪問

<script language="javascript">document.domain='http://localhost:8080';</script>
人為指定域名試試看吧內。容

8、IE8.0下iframe跨域的實現

我知道ie6是完全可以實現的。 你需要用這個做什麼?能透漏下嗎

9、對比jsonp和document.domain+iframe做跨域的異同

documen.domain只能嵌套iframe才能跨域。 建議用jsonp方法; varajaxLogoutScript=document.createElement("script")

10、IFRAME 的JS跨域問題

其實你說的就是A和B是不同域名的,那麼A和B之間的數據交互(包括JS訪問)都是受限制的,這是瀏覽器的安全問題,是不允許的

與iframe跨域域名相同相關的知識