PowerBuilder與嵌入瀏覽器交互


准備工作
1. 新增一個Application應用,新增一個窗口。
2. 在窗口中新增一個OLE控件:Microsoft Web Browser,命名為old_1。
3. 新增一個TextBox網址輸入控件,命名為sle_url,初始值為c:\temp\index.html。
4. 新增一個Button控件,命名為cb_go,clicked代碼如下:

ole_1.object.Navigate(sle_url.text)

5. 新增文件c:\temp\index.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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM