zoukankan      html  css  js  c++  java
  • PowerBuilder与嵌入浏览器交互

    准备工作
    1. 新增一个Application应用,新增一个窗口。
    2. 在窗口中新增一个OLE控件:Microsoft Web Browser,命名为old_1。
    3. 新增一个TextBox网址输入控件,命名为sle_url,初始值为c: empindex.html。
    4. 新增一个Button控件,命名为cb_go,clicked代码如下:

    ole_1.object.Navigate(sle_url.text)

    5. 新增文件c: empindex.html,内容如下:

    <script language="javascript">
    function sayhello(msg)
    {
        alert(msg);
    }
    </script>
    
    This is a PowerBuilder test page.<br />
    
    Your name: <span id="user_name">Ultra Man</span><br />
    
    <a id="say_hello" onclick="javascript:sayhello('I am web browser');">Say Hello</a><br />
    
    <a id="www_link" href="http://192.168.14.155">http://192.168.14.155</a><br />

    PB如何调用网页中的脚本?
    1. 在窗口中新增一个Button按钮:Invoke Javascript,代码如下:

    ole_1.object.document.parentWindow.sayhello("1122")

    2. 注意这里的大小写问题。JS区分大小写,PB不区分大小写,PB调用时将函数全部转化成了小写。假设JS中的函数是sayHello(),PB调用方式原则上应该也是sayHello(),但PB实际上在执行时转换成了全部小写sayhello(),这样JS在实际执行时就找不到sayhello()这个函数。所以,要想在PB中调用的JS函数应该全部都用小写作为函数名。


    PB如何获取网页元素?
    1. 在窗口中新增一个Button按钮:Fetch User Name,代码如下:

    messagebox('', string(ole_1.object.Document.GetElementById("user_name").InnerText))

    PB如何修改网页元素的属性?
    1. 在窗口中新增一个Button按钮:Change User Name,代码如下:

    ole_1.object.Document.GetElementById("user_name").InnerText = 'Super Man'

    PB如何调用网页元素的事件?
    1. 在窗口中新增一个Button按钮:Click Link,代码如下:

    ole_1.object.Document.GetElementById("say_hello").Click()

    PB如何响应网页中的Click事件?
    1. 在ole_1的clicked事件中写入如下代码:

    string ls_tagName, ls_id, ls_href
    
    ls_tagName=ole_1.object.document.activeElement.tagName
    
    if upper(trim(ls_tagName))="A" then
        ls_id = ole_1.object.document.activeElement.id 
        ls_href =ole_1.object.Document.activeElement.href 
        
        messagebox('', ls_tagName + '/' + ls_id + '/' + ls_href)
        
        ole_1.object.Navigate(ls_href)
    end if

    2. 当在网页中点击链接时,事件处理就会传到ole_1.clicked。


    参考资料:
    1. http://hi.baidu.com/starvv_w/blog/item/6264f7a23fef60b9caefd067.html
    2. http://apps.hi.baidu.com/share/detail/2832257

  • 相关阅读:
    整数划分《递归法》
    hdu 1224 Free DIY Tour
    HTTP Response Status Code HTTP响应代码中文详解
    Webserive学习站点
    页面的回传与回调
    JS中apply和call函数的运用
    SOAP协议详解
    JS在firefox和IE下差异及解决方案
    关于路径的问题
    .NET中IDisposable接口的基本使用 (转)
  • 原文地址:https://www.cnblogs.com/flish/p/6417499.html
Copyright © 2011-2022 走看看