
BBjHtmlView::executeAsyncScript
Description
In BBj 19.10 and higher, this method executes the specified JavaScript in this BBjHtmlView control and returns immediately. The result is reported asynchronously in a subsequent BBjExecuteScriptEvent.
Syntax
Return Value |
Method |
---|---|
void |
executeAsyncScript(string script) |
Parameters
Variable |
Description |
---|---|
script |
JavaScript to be executed in this BBjHtmlView. |
Return Value
The result is reported asynchronously in a subsequent BBjExecuteScriptEvent.
Remarks
None.
Example
Copy
BBjHtmlView::executeAsyncScript Example
rem ' BBjHtmlView::executeAsyncScript
web = info(3,6)="5" or info(3,6)="6"
client = 0
if !web then
client = msgbox("BBjHtmlView Client",7+32+512,"BBjHtmlView","Swing","JavaFX","Chromium")
switch client
case 1; rem ' Swing
print stbl("!OPTIONS","CHROMIUM_HTMLVIEW=FALSE",ERR=*NEXT)
print stbl("!OPTIONS","JAVAFX_HTMLVIEW=FALSE",ERR=*NEXT)
break
case 2; rem ' JavaFX
print stbl("!OPTIONS","CHROMIUM_HTMLVIEW=FALSE",ERR=*NEXT)
print stbl("!OPTIONS","JAVAFX_HTMLVIEW=TRUE",ERR=*NEXT)
break
case 3; rem ' Chromium
print stbl("!OPTIONS","CHROMIUM_HTMLVIEW=TRUE",ERR=*NEXT)
print stbl("!OPTIONS","JAVAFX_HTMLVIEW=TRUE",ERR=*NEXT)
break
swend
endif
sysgui = unt
open (sysgui)"X0"
sysgui! = bbjapi().getSysGui()
window! = sysgui!.addWindow(50,50,300,450,"executeAsyncScript",$00090003$)
window!.setCallback(window!.ON_CLOSE,"eoj")
gosub makehtml
htmlview! = window!.addHtmlView(101,25,25,250,150,html$)
htmlview!.setCallback(htmlview!.ON_PAGE_LOADED,"pageloaded")
if web then
htmlview!.injectScript("function doAlert() { console.log(alert('Alert dialog')); }",1)
htmlview!.injectScript("function doConfirm() { console.log(confirm('Confirm dialog')); }",1)
htmlview!.injectScript("function doPrompt() { console.log(prompt('Prompt dialog')); }",1)
endif
print "getClientType: ",htmlview!.getClientType(err=*next)
print "getClientVersion: ",htmlview!.getClientVersion(err=*next)
alert! = window!.addButton(102,25,200,250,25,"alert",$$)
alert!.setCallback(alert!.ON_BUTTON_PUSH,"alert")
confirm! = window!.addButton(103,25,250,250,25,"confirm",$$)
confirm!.setCallback(alert!.ON_BUTTON_PUSH,"confirm")
prompt! = window!.addButton(104,25,300,250,25,"prompt",$$)
prompt!.setCallback(prompt!.ON_BUTTON_PUSH,"prompt")
backgroundColor! = window!.addButton(105,25,350,250,25,"backgroundColor",$$)
backgroundColor!.setCallback(backgroundColor!.ON_BUTTON_PUSH,"backgroundColor")
samples! = window!.addButton(2,25,400,250,25,"Samples",$$)
samples!.setCallback(samples!.ON_BUTTON_PUSH,"samples")
process_events
eoj:
release
makehtml:
html$ = ""
html$ = html$ + "<!DOCTYPE html> <html> <body>"
html$ = html$ + "<br><button onclick='doAlert()'>Alert</button>"
html$ = html$ + "<br><button onclick='doConfirm()'>Confirm</button>"
html$ = html$ + "<br><button onclick='doPrompt()'>Prompt</button>"
html$ = html$ + "<script>"
html$ = html$ + "function doAlert() { console.log(alert('Alert dialog')); }"
html$ = html$ + "function doConfirm() { console.log(confirm('Confirm dialog')); }"
html$ = html$ + "function doPrompt() { console.log(prompt('Prompt dialog')); }"
html$ = html$ + "</script>"
html$ = html$ + "</body> </html>"
return
pageloaded:
event! = sysgui!.getLastEvent()
htmlview!.setCallback(htmlview!.ON_EXECUTE_SCRIPT,"executeScript")
i = msgbox(str(event!.getText()),32768,event!.getEventName())
return
alert:
js$ = "alert('alert')"
gosub executeAsyncScript
return
confirm:
js$ = "confirm('confirm')"
gosub executeAsyncScript
return
prompt:
js$ = "prompt('prompt')"
gosub executeAsyncScript
return
executeScript:
event! = sysgui!.getLastEvent()
msg$ = event!.getEventName()+" "+date(0:"%Hz:%mz:%sz.%tz %p")
result! = event!.getResult()
if result! = null() then result$ = "null" else result$ = result!.getClass().getName()+" "+result!.toString()
msg$ = msg$ + $0a$ + event!.getScript()+": "+result$
print msg$
i = msgbox(msg$,0,event!.getEventName())
return
backgroundColor:
r = rnd(255)
g = rnd(255)
b = rnd(255)
rgb$ = "#"+hta(chr(r))+hta(chr(g))+hta(chr(b))
js$ = "document.body.style.backgroundColor = """+rgb$+""""
if web then js$ = "style.backgroundColor = """+rgb$+""""
gosub executeAsyncScript
return
executeAsyncScript:
htmlview!.executeAsyncScript(js$)
print "executeAsyncScript ",date(0:"%Hz:%mz:%sz.%tz %p")," ",js$
return
samples:
if web then body$ = "" else body$ = "document.body."
js$ = "Math.sqrt(100)"; gosub executeAsyncScript; rem ' Double or Integer 10
js$ = "Math.sqrt(-1)"; gosub executeAsyncScript; rem ' Double NaN
js$ = "null"; gosub executeAsyncScript; rem ' null
js$ = "undefined"; gosub executeAsyncScript; rem ' null
js$ = "document.hasFocus()"; gosub executeAsyncScript; rem ' Boolean false
js$ = body$ + "style.backgroundColor"; gosub executeAsyncScript; rem ' String #ffff00
js$ = "Math.PI"; gosub executeAsyncScript; rem ' Double 3.141592653589793
js$ = "1/0"; gosub executeAsyncScript; rem ' Double Infinity
js$ = "-1/0"; gosub executeAsyncScript; rem ' Double -Infinity
js$ = "Number.MIN_SAFE_INTEGER"; gosub executeAsyncScript; rem '
js$ = "Number.MAX_SAFE_INTEGER"; gosub executeAsyncScript; rem '
js$ = "Number.MAX_VALUE"; gosub executeAsyncScript; rem '
js$ = "0"; gosub executeAsyncScript; rem ' Integer
js$ = "42"; gosub executeAsyncScript; rem ' Integer
js$ = "2147483647"; gosub executeAsyncScript; rem ' Integer
js$ = "2147483648"; gosub executeAsyncScript; rem ' Long
js$ = """true"""; gosub executeAsyncScript; rem ' String
js$ = """false"""; gosub executeAsyncScript; rem ' String
js$ = """0"""; gosub executeAsyncScript; rem ' String
js$ = """1"""; gosub executeAsyncScript; rem ' String
js$ = """null"""; gosub executeAsyncScript; rem ' String
js$ = "null"; gosub executeAsyncScript; rem ' null
js$ = "undefined"; gosub executeAsyncScript; rem ' null
return
See Also
See the BBj Object Diagram for an illustration of the relationship between BBj Objects.