導航:首頁 > 編程語言 > iframe跨域調用js

iframe跨域調用js

發布時間:2022-09-20 11:25:57

javaScript 怎麼跨域獲取 iframe 中的內容

如果 iframe地址與當前頁面地址同域,js可以訪問該頁面內的對象.

使用 window.frames[0] 或者window.frames[name] 來訪問frame的window對象

如要獲取元素,使用 window.frames[0].document.getElementById
另外 ,ie系列和webkit系列可能訪問方法上略有區別,具體可調試查看

㈡ JS跨域訪問操作iframe代碼

沒太明白你的意思,如果是讓iframe跟著主窗口大小走,那麼只需要設置iframe的大小就可以了。
<html>
<body>
<iframe width="100%" height="100%" src="b.html" id="frm">
</iframe><br>
輸入寬:<input name="myWidth"><br>
輸入高:<input name="myHeight"><br>
<input type="button" value="調整大小" onClick="fun()">
</body>
</HEAD>
</HTML>
<script>
function fun(){
var myWidth = document.getElementById("myWidth").value;
var myHeight = document.getElementById("myHeight").value;
window.resizeTo(myWidth,myHeight);
}
</script>

補充:
你的意思說,A頁面有多大,你的B頁面就有多大,把整個屏幕撐滿,是這個意思嗎?

㈢ 如何用javascript 跨域獲取iframe子頁面的元素信息

跨域的話想用父頁面的js獲取iframe里的元素是不可能的。
用chrome擴展程序的話是可以的。

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

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

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

㈤ 主頁面怎麼調用iframe里的javascript方法

如果是同一個域,iframe可以調用父窗口的js方法。如果
是父窗口調用子窗口內部的方法。不論跨不跨域,都不能調用。
解決辦法:H5提供的消息機制。支持跨域。

在iframe窗口的js代碼中,監聽事件:
window.onmessage=function(e){
//e.data--接收到的字元串。
//e.source---發送窗口所在的域。
//e.orgin--發送窗口的代理對象。
}
在主頁面窗口中,發送消息。
window.postMessage("字元串","域");
//其中的域是指iframe所在網站的域名。如果為*表示不校驗校驗域名。

㈥ javascript 跨域調用js文件問題.....

三種方法實現js跨域訪問

1.基於iframe實現跨域

基於iframe實現的跨域要求兩個域具有aa.xx.com,bb.xx.com這種特點,也就是兩個頁面必須屬於一個基礎域(例如都是xxx.com,或是xxx.com.cn),使用同一協議(例如都是 http)和同一埠(例如都是80),這樣在兩個頁面中同時添加document.domain,就可以實現父頁面調用子頁面的函數,代碼如下:

頁面一代碼:
<html>
<head>
<script>
document.domain="xx.com";
functionaa(){
alert("p");
}
</script>
</head>
<body>
<iframesrc="http://localhost:8080/cmsui/2.html"id="i">

</iframe>
<script>
document.getelementbyid('i').oncg=function(){
vard=document.getelementbyid('i').contentwindow;
d.a();

};
</script>
</body>
</html>
頁面二代碼:
<html>
<head>
<script>
document.domain="xx.com";
functiona(){
alert("c");
}
</script>
</head>
<body>
</body>
</html>

這時候父頁面就可以調用子頁面的a函數,實現js跨域訪問


2.基於script標簽實現跨域

script標簽本身就可以訪問其它域的資源,不受瀏覽器同源策略的限制,可以通過在頁面動態創建script標簽,代碼如下

varscript=document.createElement('script');
script.src="http://aa.xx.com/js/*.js";
document.body.appendChild(script);

這樣通過動態創建script標簽就可以載入其它域的js文件,然後通過本頁面就可以調用載入後js文件的函數,這樣做的缺陷就是不能載入其它域的文檔,只能是js文件,jsonp便是通過這種方式實現的,jsonp通過向其它域傳入一個callback參數,通過其他域的後台將callback參數值和json串包裝成javascript函數返回,因為是通過script標簽發出的請求,瀏覽器會將返回來的字元串按照javascript進行解析執行,實現了域與域之間的數據傳輸。

jquery中對jsonp的支持也是基於此方案


3.後台代理方式


這種方式可以解決所有跨域問題,也就是將後台作為代理,每次對其它域的請求轉交給本域的後台,本域的後台通過模擬http請求去訪問其它域,再將返回的結果返回給前台,這樣做的好處是,無論訪問的是文檔,還是js文件都可以實現跨域

㈦ js如何操作iframe的跨域問題

A域名下的頁面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);完成對父頁面寬度和高度的設置;
如圖:

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

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

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

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

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

例如,當前頁面是a..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 = '.com';
</script>
</body>
</html>

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

㈨ js 跨域操作 iframe 裡面的元素

不可以。
iframe也存在跨域的問題。你只能修改iframe的熟悉,但是操作不了iframe裡面的元素。這是瀏覽器限制,非JS能力所及。

㈩ js iframe 跨域調用怎麼不行。

你這個調用的方式沒問題,
問題是你的showM
在 載入 child的時候,頁面內容是 對的
但是通過父業面調用一次後, child的內容就變成 'child'了,showm()之類的就都被沖掉了,
所以再次執行就會報錯

閱讀全文

與iframe跨域調用js相關的資料

熱點內容
ps3文件分割視頻 瀏覽:280
微信圖片一鍵轉發軟體 瀏覽:331
如何判斷s200plc編程電纜 瀏覽:691
太原編程培訓班哪個好 瀏覽:171
樹葉吹奏教程 瀏覽:6
社交app帶來了哪些社會問題 瀏覽:394
如何安裝愛寶8800數據採集器 瀏覽:712
文件保存了怎麼找不到了 瀏覽:476
彩票網站怎麼辨真假 瀏覽:840
pr找不到該文件 瀏覽:963
java移除panel 瀏覽:354
jsp填充jsp 瀏覽:166
海關外貿大數據在哪裡查 瀏覽:381
思特奇java筆試題 瀏覽:121
葫蘆俠在手機中的文件名 瀏覽:813
plc編程應該怎麼收錢 瀏覽:584
c語言中源文件由什麼組成 瀏覽:890
linuxhttpdphp配置文件 瀏覽:607
拆單數據要怎麼保存 瀏覽:17
mac電腦怎樣壓縮文件到100m 瀏覽:645

友情鏈接