BUI logoDWC logoBBjWebManager::clearCallback

Description

In BBj 16.00 and higher, this method clears a registered callback for a specified BBjWebManager event.

In BBj 24.11 and higher, this method clears the callback routine for a specified BBjWebManager window event that was previously created using BBjWebManager::setCallback.

Note:

In BBj 22.03 and higher, BBjWebManager is an alias for BBjBuiManager.

Syntax

Return Value Method
void clearCallback(int eventType)
void clearCallback(String eventType)
void clearCallback(String eventType, int callbackID)

Parameters

Parameter Description
eventType Event type for which the callback is to be unregistered.
callbackID If specified and non-zero, this is the callbackID that was returned from a previous BBjWebManager::setCallback. If not specified, or if zero is specified, all active callbacks for the specified eventType are cleared.

Return Value

None.

Remarks

This maps to removeEventListener.

Example

rem ' BBjWebManager

sysgui = unt
open (sysgui)"X0"
sysgui! = bbjapi().getSysGui()

web! = bbjapi().getBuiManager()
web!.setCallback(web!.ON_BROWSER_CLOSE,"ON_BROWSER_CLOSE",err=*next)
web!.clearCallback(web!.ON_BROWSER_BACK,err=*next)
bbjapi().getConfig().releaseOnLostConnection(0)
setesc ON_LOST_CONNECTION

url$ = "(Not Browser)"
url$ = web!.getUrl(err=*next)

appName$ = " (Not Browser)"
appName$ = web!.getApplicationName(err=*next)

title$ = "BBjWebManager: " + appName$
touch = 0
touch = web!.isTouchSupported(err=*next)
if touch then title$ = title$ + " (Touch)" else title$ = title$ + " (Not Touch)"

window! = sysgui!.addWindow(25,25,450,600,title$,$00090083$)
window!.setCallback(window!.ON_CLOSE,"eoj")

status! = window!.addStatusBar(999)

window!.addStaticText(99,25,25,400,25,"URL: "+url$,$$)

window!.addGroupBox(100,25,75,400,125,"End Actions")
endApp! = window!.addRadioButton(101,30,100,75,25,"App",$0020$)
endUrl! = window!.addRadioButton(102,105,100,75,25,"URL",$0020$)
endMsg! = window!.addRadioButton(103,180,100,75,25,"Msg",$0020$)
endNone! = window!.addRadioButton(104,255,100,75,25,"None",$0020$)
endDefault! = window!.addRadioButton(105,330,100,75,25,"Default",$0020$)
endGroup! = window!.addRadioGroup()
endGroup!.add(endApp!)
endGroup!.add(endUrl!)
endGroup!.add(endMsg!)
endGroup!.add(endNone!)
endGroup!.add(endDefault!)
window!.addStaticText(106,30,150,60,25,"Value:",$8000$)
endValue! = window!.addEditBox(107,100,150,225,25,$$)
setEndAction! = window!.addButton(108,340,150,75,25,"Set",$$)
setEndAction!.setCallback(setEndAction!.ON_BUTTON_PUSH,"setEndAction")

window!.addGroupBox(200,25,225,400,125,"Err Actions")
errApp! = window!.addRadioButton(201,30,250,75,25,"App",$0020$)
errUrl! = window!.addRadioButton(202,105,250,75,25,"URL",$0020$)
errMsg! = window!.addRadioButton(203,180,250,75,25,"Msg",$0020$)
errNone! = window!.addRadioButton(204,255,250,75,25,"None",$0020$)
errDefault! = window!.addRadioButton(205,330,250,75,25,"Default",$0020$)
errGroup! = window!.addRadioGroup()
errGroup!.add(errApp!)
errGroup!.add(errUrl!)
errGroup!.add(errMsg!)
errGroup!.add(errNone!)
errGroup!.add(errDefault!)
window!.addStaticText(206,30,300,60,25,"Value:",$8000$)
errValue! = window!.addEditBox(207,100,300,225,25,$$)
setErrAction! = window!.addButton(208,340,300,75,25,"Set",$$)
setErrAction!.setCallback(setEndAction!.ON_BUTTON_PUSH,"setErrAction")

title$ = "Show Confirm Close Dialog"
confirm = 0
confirm = web!.getShowConfirmCloseDialog(err=*next)
flags$ = iff(confirm,$0004$,$0000$)
setShowConfirmDialog! = window!.addCheckBox(209,25,375,300,25,title$,flags$)
setShowConfirmDialog!.setCallback(setShowConfirmDialog!.ON_CHECK_ON,"showConfirmDialogOn")
setShowConfirmDialog!.setCallback(setShowConfirmDialog!.ON_CHECK_OFF,"showConfirmDialogOff")

showBusy! = window!.addButton(1,25,425,100,25,"Busy",$$)
showBusy!.setCallback(showBusy!.ON_BUTTON_PUSH,"showBusy")
busyMessage! = window!.addEditBox(300,150,425,275,25,"Working...",$$)

gosub fetch

rem ' https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/Date
js$ = "function toISOString(date){try{return new Date(date).toISOString()}catch(e){return new String(e)}}"
sysgui!.injectScript(js$)
toISOString! = window!.addButton(2,25,475,100,25,"toISOString",$$)
toISOString!.setCallback(toISOString!.ON_BUTTON_PUSH,"toISOString")

text$ = "December 25, " + date(0:"%Yl")
text! = window!.addEditBox(400,150,475,275,25,text$,$$)

web!.setCallback(web!.ON_EXECUTE_SCRIPT,"executeScript",err=*next)

executeAsyncScript! = window!.addButton(3,150,525,275,25,"executeAsyncScript",$$)
executeAsyncScript!.setCallback(executeAsyncScript!.ON_BUTTON_PUSH,"samples")

process_events

eoj:
  release

toISOString:
  text$ = text!.getText()
  js$ = "toISOString('"+text$+"')"
  t = tim
  if info(3,6)="5" or info(3,6)="6" then
     ISOString! = web!.executeScript(js$)
  else
     ISOString! = sysgui!.executeScript(js$)
  endif
  t = tim - t, t = t * 3600 * 1000
  msg$ = "executeScript " + js$ + " = " + str(ISOString!) + ": " + str(t) + " milliseconds."
  status!.setText(msg$)
return

samples:
  if web then body$ = "" else body$ = "document.body."
  js$ = "console.log('executeAsyncScript')"; gosub executeAsyncScript; rem ' undefined
  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

executeAsyncScript:
  t = tim
  if info(3,6)="5" or info(3,6)="6" then
     index! = web!.executeAsyncScript(js$)
  else
     index! = sysgui!.executeAsyncScript(js$)
  endif
  index = 0; if index!<>null() then index = num(index!)
  t = tim - t, t = t * 3600 * 1000
  System.out.println("executeAsyncScript " + str(index) + " " + js$ + ": " + str(t) + " milliseconds.")
return

executeScript:
  event! = sysgui!.getLastEvent()
  index = 0, index = event!.getIndex(err=*next)
  result! = event!.getResult()
  if result! = null() then result$ = "null" else result$ = result!.getClass().getName()+" "+result!.toString()
  msg$ = event!.getEventName()+" "+str(index)+" "+date(0:"%Hz:%mz:%sz.%tz %p") 
  msg$ = msg$ + " result = " + result$ + " script = " + event!.getScript()
  print msg$
  System.out.println(msg$)
  status!.setText(msg$)
  rem i = msgbox(msg$,0,event!.getEventName())
return

fetch:
  endAction! = web!.getEndAction(err=*return)
  switch endAction!.getActionType()
    case endAction!.ACTION_APP
       endApp!.setSelected(1)
       endValue!.setText(endAction!.getAppName())
       break
    case endAction!.ACTION_URL
       endUrl!.setSelected(1)
       endValue!.setText(endAction!.getUrl())
       break
    case endAction!.ACTION_MSG
       endMsg!.setSelected(1)
       endValue!.setText(endAction!.getMessage())
       break
    case endAction!.ACTION_NONE
       endNone!.setSelected(1)
       endValue!.setText("")
    break
    case endAction!.ACTION_DEFAULT
       endDefault!.setSelected(1)
       endValue!.setText("")
       break
  swend
  errAction! = web!.getErrAction(err=*return)
  switch errAction!.getActionType()
    case errAction!.ACTION_APP
       errApp!.setSelected(1)
       errValue!.setText(errAction!.getAppName())
       break
    case errAction!.ACTION_URL
       errUrl!.setSelected(1)
       errValue!.setText(errAction!.getUrl())
       break
    case errAction!.ACTION_MSG
       errMsg!.setSelected(1)
       errValue!.setText(errAction!.getMessage())
       break
    case errAction!.ACTION_NONE
       errNone!.setSelected(1)
       errValue!.setText("")
       break
    case errAction!.ACTION_DEFAULT
       errDefault!.setSelected(1)
       errValue!.setText("")
       break
  swend
return

setEndAction:
  if endApp!.isSelected() then action! = web!.appAction(endValue!.getText())
  if endUrl!.isSelected() then action! = web!.urlAction(endValue!.getText())
  if endMsg!.isSelected() then action! = web!.msgAction(endValue!.getText())
  if endNone!.isSelected() then action! = web!.noneAction()
  if endDefault!.isSelected() then action! = web!.defaultAction()
  web!.setEndAction(action!,err=*return)
return

setErrAction:
  if errApp!.isSelected() then action! = web!.appAction(errValue!.getText())
  if errUrl!.isSelected() then action! = web!.urlAction(errValue!.getText())
  if errMsg!.isSelected() then action! = web!.msgAction(errValue!.getText())
  if errNone!.isSelected() then action! = web!.noneAction()
  if errDefault!.isSelected() then action! = web!.defaultAction()
  web!.setErrAction(action!,err=*return)
return

showConfirmDialogOn:
  web!.setShowConfirmCloseDialog(1,err=*next)
return

showConfirmDialogOff:
  web!.setShowConfirmCloseDialog(0,err=*next)
return

showBusy:
  busy! = web!.getBusyIndicator(err=*return)
  busy!.setText(busyMessage!.getText())
  busy!.setVisible(1)
  wait 3
  busy!.setVisible(0)
return

on_lost_connection:
  event$ = "ON_LOST_CONNECTION"
  goto terminate

on_browser_close:
  event$ = "ON_BROWSER_CLOSE"
  goto terminate

terminate:
  seterr release
  System.err.println(pgm(-2)+" "+event$+" "+str(tcb(19)))
  filename$ = System.getProperty("user.home") + "/Desktop/" + event$ + ".txt"
  u = unt
  open (u,mode="o_create,o_trunk")filename$
  print (u)date(0:"%Hz:%mz:%sz.%tz ")+event$+" "+str(tcb(19))
  close (u)
release:
  release

ClosedVersion History

  • BBj 24.11: Added ways to clear the callback routine for a specified BBjWebManager window event.
  • BBj 22.03: BBjWebManager became an alias for BBjBuiManager.
  • BBj 16.00: BBjBuiManager::clearCallback added.

See Also

BBjAPI

Object Variables

BBjWebManager::setCallback

PROCESS_EVENTS Verb

BBj Custom Objects Tutorial

See the BBj Object Diagram for an illustration of the relationship between BBj Objects.