㈠ js與as怎麼相互調用,as裡面可以直接彈出一個對話框或者跳轉到一個新的頁面嗎
AS調用JS函數:
ExternalInterface.call(JS中的函數名,參數一,參數二);//調用JS中的一個函數
以下AS代碼回:
import flash.external.ExternalInterface;
例子:ExternalInterface.call('alert',『hello world!』答);//會彈出JS的提示框
JS調用AS函數:
ExternalInterface.addCallback(提供給JS調用的名稱,調用的函數); //提供一個函數給JS調用
以下AS代碼:
import flash.external.ExternalInterface;
import mx.controls.Alert;
public function asFunc(a:int,b:int):int
{
Alert.show(a+b);
}
ExternalInterface.addCallback("add",asFunc);
以下JS代碼:
add(1,2);//調用的其實是AS中的asFunc方法 ,會在Flash中彈出提示框
㈡ 調用iframe中的js問題
調用格式為:子框架ID.函數名():
如<iframe src='../test.html' id='frame1'></iframe>
調用格式應為:frame1.test(),光用test()顯然是找不到的,另外內子窗體中定義的全容局變數也可以用類似格式。
IE8測試通過,其它不知。
㈢ javascript 能否調用到iframe標簽包含頁面中的函數
可以的。只要兩個頁面有一定的關系,無論是通過iframe,還是frameset,甚至是window.open,超鏈接等等方式,都可以讓兩個頁面之間的js互相調用。注意,是互相調用,也就是說,兩者誰都有辦法調用另一個的js代碼。
當然有前提,前提就是兩個頁面都是你自己的頁面,是在同一個域下面的,否則牽扯跨域問題,就比較麻煩了。
互相調用的關鍵是獲取另一方的window對象。通常頁面中window對象就是window,直接使用。但通過某種關系的另一個頁面的window就需要通過別的方式獲取了。以iframe為例,跨域通過普通節點獲取的方式得到iframe節點,比如iframe節點id為ifr,則:
varifr=document.getElementById('ifr');
varwin=ifr.window||ifr.contentWindow;//考慮兼容性問題
這里獲取到的win,就對應普通頁面的window。要操作這個框架頁面,就可以通過這個win進行操作了。比如獲取框架頁面的文檔對象win.document,到了這一步,剩下的就和普通頁面沒有區別了。
要獲取通過window.open打開的頁面的window引用就更簡單了:
varwin=window.open(url);//這個函數還有其它知識點,請自行搜索
而要在window.open打開的頁面中獲取父頁面的window,也就是打開該頁面的頁面的window,也很簡單:
varwin=window.opener;//表示打開本window的那個頁面的window
獲取到另一個頁面的window引用後,實際上另一個頁面的很多控制權就拿到了。你可以通過獲取到的window隨意修改另一個頁面了。比如要調用iframe中的a函數,就可以這樣:
varifr=document.getElementById('ifr');
varwin=ifr.window||ifr.contentWindow;
win.a();//調用iframe中的a函數
㈣ 主頁面怎麼調用iframe里的javascript方法
如果是同一個域,iframe可以調用父窗口的js方法。如果
是父窗口調用子窗口內部的方法。不論跨不跨域,都不能調用。
解決辦法:H5提供的消息機制。支持跨域。
在iframe窗口的js代碼中,監聽事件:
window.onmessage=function(e){
//e.data--接收到的字元串。
//e.source---發送窗口所在的域。
//e.orgin--發送窗口的代理對象。
}
在主頁面窗口中,發送消息。
window.postMessage("字元串","域");
//其中的域是指iframe所在網站的域名。如果為*表示不校驗校驗域名。