㈠ 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所在网站的域名。如果为*表示不校验校验域名。