准備工作
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