• 9627阅读
  • 3回复

Activex与网页html中的javascrip交互 [复制链接]

上一主题 下一主题
离线dream3938487
 
只看楼主 倒序阅读 楼主  发表于: 2010-04-28
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
大这知道怎样在用qt开发的Activex插件中调用网页html中的javascript么?或者发送事件让网页html中的javascrip响应么?现在知道网页html中的javascript可以调用qt里的公共槽,可返回去怎么在qt里调用网页中的javascript呢
万分感谢
离线dream3938487
只看该作者 1楼 发表于: 2010-04-30
flex,javascript,activex 调用

Flex最终会生成swf文件以ActiveX的方式部署网页上(html,jsp,asp,aspx等),由于ActiveX是一个独立体它并不能直接获取页面的元素数据,同样asp,aspx等服务端代码也不对它进行操作,这样Flex的信息交互就变得很孤立。在Web用户程序中不同页的信息交换是非常重要,通常这些信息明确下一个页面应该做什么;如果Flex得不到这些信息那么Flex在实际应用中就大打折扣!于是到网上找一下资料,发现自己的担心是多余的。Flex提供相关对象可以灵活地和当前网页的JavaScript相互进行灵活的调用。那就是说可以通过JavaScript调用Flex内部的方法,同样在Flex时也可以直接调用页面上相关的JavaScript方法。
       Flex提供了ExternalInterface对象用于和JavaScript进行互操作。对象分别提供了addCallBack和Cell方法:

addCallBack方法
用于注册一个内部方法用于给JavaScript调用。
function callMe(name:String):String {
    return name+":" + txtUserName.text  ;
}
实际上JavaScript是不能直接调用Flex的内部方法的,那如何使JavaScript能够调用呢?
首先通过ExternalInterface.addCallback("myFunction", callMe);的方法进行注册,可以把方法放在Applicaion. Initialize的事件中。
方法第一个参数是:外部调用名称就是JavaScript调用的方法名称。
方法第二个参数是:代理执行Flex的内部函数。
JavaScript通过以下方式调用:
function Button1_onclick() {
alert(document.all('相关ActiveX控件名称').myFunction('bbq'));
}

Call方法
用于调用当前页面里的JavaScript方法.
<script id="clientEventHandlersJS" language="javascript">
function getuserid()
{
     return 'henry';
}
</script>
在Flex里可以通过以下方式调用getuserid()方法。
var id:String= ExternalInterface.call("getuserid");
Alert.show(id);



Flex在和JavaScript整合这方面做得非常好,你并不需要花费太多的工作就能够实现和页面数据元素进行数据交换;同样也可以调用已经有的ajax功能。
接下来学习的是不同页面的Flex应用实例如何共享信息。
最后还是老话一句,有兴趣的朋友多了解一下Flex.
Flex的SDK帮助文件写得还挺详细的,基本上能找到使用的方法

这是flex方面的,请问qt可以这样与javascript相互交互么?
离线nightcolor
只看该作者 2楼 发表于: 2011-01-12
qt可以这样与javascript相互交互,只知道用Qtwebkit 或写成Activex 可以,但是activex会破坏跨平台性,我帮顶,需牛人来解答
离线XChinux

只看该作者 3楼 发表于: 2011-01-12
这得专门看ActiveX与Jscript/vbscript方面的交互了吧,IE专属的.
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
快速回复
限100 字节
 
上一个 下一个