SpiderBasic Library - Liste neuer Funktionen

Hier könnt ihr alle Fragen zu SpiderBasic austauschen.
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: SpiderBasic Library - Liste neuer Funktionen

Beitrag von RSBasic »

Try und Catch:

Code: Alles auswählen

EnableExplicit

Procedure TryCatch(try_callback, catch_callback)
  ! try {
  !   v_try_callback();
  ! } catch(error) {
  !   v_catch_callback(error);
  ! }
  
EndProcedure

;================================================== Beispielcode ==================================================

Procedure MyProc()
  ! own_javascripterror;
  
EndProcedure

Procedure MyErrorProc(error)
  Debug "Error: " + error
  ! console.log("Error: " + v_error.message);
  
EndProcedure

If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_ScreenCentered)
  
  TryCatch(@MyProc(), @MyErrorProc())
  
EndIf
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: SpiderBasic Library - Liste neuer Funktionen

Beitrag von RSBasic »

Prozedur asynchron aufrufen:

Code: Alles auswählen

EnableExplicit

Procedure CallAsynchronFunction(callback, delay)
  ! window.setTimeout(v_callback, v_delay);
  
EndProcedure

;================================================== Beispielcode ==================================================

Procedure Test()
  ButtonGadget(2, 50, 50, 200, 50, "Button was created late.", 0)
  
EndProcedure

If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_ScreenCentered)
  TextGadget(1, 10, 10, 100, 20, "Wait 3 seconds...", 0)
  
  CallAsynchronFunction(@Test(), 3000)
  
EndIf
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: SpiderBasic Library - Liste neuer Funktionen

Beitrag von RSBasic »

URL ermitteln:

Code: Alles auswählen

EnableExplicit

Procedure.s GetSiteURL()
  ! return window.location;
  
EndProcedure

;================================================== Beispielcode ==================================================

If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_ScreenCentered)
  
  Debug GetSiteURL()
  
EndIf
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: SpiderBasic Library - Liste neuer Funktionen

Beitrag von RSBasic »

Weiterleiten auf eine Seite:

Code: Alles auswählen

EnableExplicit

Procedure RedirectSite(url.s)
  ! window.location.href = v_url;
  
EndProcedure

;================================================== Beispielcode ==================================================

Procedure GadgetEvent()
  Select EventGadget()
    Case 1
      RedirectSite("https://www.google.de")
  EndSelect
 
EndProcedure

If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_ScreenCentered)
  ButtonGadget(1, 10, 10, 100, 20, "To Google", 0)
  
  BindEvent(#PB_Event_Gadget, @GadgetEvent())
  
EndIf
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: SpiderBasic Library - Liste neuer Funktionen

Beitrag von RSBasic »

Seite zurück und vorwärts springen:

Code: Alles auswählen

EnableExplicit

Procedure BackSite()
  ! window.history.back();
  
EndProcedure

Procedure ForwardSite()
  ! window.history.forward();
  
EndProcedure

;================================================== Beispielcode ==================================================

Procedure GadgetEvent()
  Select EventGadget()
    Case 1
      ! window.location.href = window.location.href + "?test=123";
    Case 2
      BackSite()
    Case 3
      ForwardSite()
  EndSelect
 
EndProcedure

If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_ScreenCentered)
  ButtonGadget(1, 10, 10, 480, 50, "Redirect this site to test to be able to use the buttons.", 0)
  ButtonGadget(2, 10, 80, 20, 20, "<", 0)
  ButtonGadget(3, 30, 80, 20, 20, ">", 0)
  
  BindEvent(#PB_Event_Gadget, @GadgetEvent())
  
EndIf
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: SpiderBasic Library - Liste neuer Funktionen

Beitrag von RSBasic »

Es gibt jetzt AnkerGadget(), um zu beliebigen Abschnitten zu springen:

Code: Alles auswählen

EnableExplicit

Procedure AnkerGadget(windowid, id_name.s, x, y)
  ! var AnkerGadget = document.createElement('a');
  ! AnkerGadget.name = v_id_name;
  ! AnkerGadget.className = "SB_AnkerGadget";
  ! AnkerGadget.style.cssText = "position: absolute; left: " + v_x + "px; top: " + v_y + "px; width: 0px; height: 0px;";
  ! v_windowid.content.appendChild(AnkerGadget);
  
EndProcedure

Procedure OpenWindowEx(window, y, x, innerwidth, innerheight, Title.s, Flags, ParentID)
  Protected ReturnValue
  
  ReturnValue = OpenWindow(window, y, x, innerwidth, innerheight, Title, Flags, ParentID)
  
  If Flags & #PB_Window_Background
    ! spider_WindowID(v_window).contentFrame.style.overflow = "auto";
    If innerwidth > 0
      ! spider_WindowID(v_window).content.style.width = v_innerwidth + "px";
    EndIf
    If innerheight > 0
      ! spider_WindowID(v_window).content.style.height = v_innerheight + "px";
    EndIf
  EndIf
  
  ProcedureReturn ReturnValue
EndProcedure

Macro OpenWindow(Window, y, x, InnerWidth, InnerHeight, Title, Flags = 0, ParentID = 0)
  OpenWindowEx(Window, y, x, InnerWidth, InnerHeight, Title, Flags, ParentID)
EndMacro

Procedure RedirectSite(url.s)
  ! window.location.href = v_url;
  
EndProcedure

;================================================== Beispielcode ==================================================

Procedure GadgetEvent()
  Select EventGadget()
    Case 1
      RedirectSite("#MyAnker")
  EndSelect
  
EndProcedure

If OpenWindow(0, 0, 0, 0, 3000, "Window", #PB_Window_Background)
  HyperLinkGadget(1, 10, 10, 100, 20, "Jump to anker", RGB(0, 0, 255), #PB_HyperLink_Underline)
  
  AnkerGadget(WindowID(0), "MyAnker", 0, 2000)
  TextGadget(2, 10, 2000, 200, 20, "Hello, good, you're here now. :-)", 0)
  
  BindEvent(#PB_Event_Gadget, @GadgetEvent())
  
EndIf
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: SpiderBasic Library - Liste neuer Funktionen

Beitrag von ccode_new »

Hallo!

Ich hätte noch ein paar Plätzchen/ Kekse zu vergeben. :mrgreen:

Code: Alles auswählen

Global.s SuperMerker, wer, ltime

;Beispiel für UTC-Time: "Mon, 22 Oct 2018 20:15:00"
;UTC ist nicht unbedingt die Zeit auf deinen Uhren.
;UTC = Coordinated Universal Time = abgestimmte Weltzeit

Procedure.s GetLocalTime(utc_time.s)
  ! var udate = new Date(v_utc_time)
  ! var ldate = new Date(Date.UTC(udate.getFullYear(), udate.getMonth(), udate.getDate(), udate.getHours(), udate.getMinutes(), udate.getSeconds()))
  ! return ldate
EndProcedure

Procedure.s GetUTCTime(local_time.s)
  ! var ldate = new Date(v_local_time)
  ! var udate = new Date(ldate.getUTCFullYear(), ldate.getUTCMonth(), ldate.getUTCDate(), ldate.getUTCHours(), ldate.getUTCMinutes(), ldate.getUTCSeconds());
  ! return udate
EndProcedure

Procedure SetCookie(name.s, value.s, utc_time.s = "0")
  If utc_time = "0"
    ! document.cookie = v_name + "=" + v_value + "; path=/;"
  Else ;läuft ab... (Standard: Läuft beim schließen des Browsers ab.)
    ! document.cookie = v_name + "=" + v_value + "; expires=" + v_utc_time + " UTC; path=/;"
  EndIf
EndProcedure

Procedure.s GetCookie(name.s)
  Protected c.s, out.s, pos.i
  ! v_c = document.cookie;
  For pos = 0 To Len(c)
    out = StringField(c, pos, ";")
    If FindString(out, name) > 0
      out = StringField(out, 2, "=")
      Break
    EndIf
  Next pos
  ProcedureReturn out
EndProcedure

SuperMerker = GetCookie("MeinKeks")

If SuperMerker <> ""
  ! alert("Willkommen zurück: " + v_supermerker);
Else
  ltime = GetLocalTime("Mon, 22 Oct 2018 18:15:00")
  ! v_wer = prompt("Wie heißen Sie ?", "");
  SetCookie("MeinKeks", wer, GetUTCTime("Mon, 22 Oct 2018 20:15:00"))
  ! alert("Ich merke mir deinen Namen bis zum folgenden Datum:\n"+ v_ltime);
EndIf
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: SpiderBasic Library - Liste neuer Funktionen

Beitrag von RSBasic »

Danke für deinen Code, den ich in meinem Inhaltsverzeichnis aufgenommen habe. :allright:
Ich hätte aber gerne echte Kekse. :mrgreen:
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: SpiderBasic Library - Liste neuer Funktionen

Beitrag von RSBasic »

Jetzt gibt es YouTubeGadget():

Code: Alles auswählen

EnableExplicit

Procedure YouTubeGadget(windowid, gadget, x, y, width, height, video_id.s, autoplay, startposition, endposition, withcontrol, withfullscreen, nocookie)
  Protected domain.s
  Protected video_endposition.s
  
  If nocookie
    domain = "https://www.youtube-nocookie.com"
  Else
    domain = "https://www.youtube.com"
  EndIf
  
  ! var YouTubeGadget = document.createElement('iframe');
  ! YouTubeGadget.id = "SB_Gadget_" + v_gadget;
  ! YouTubeGadget.width = v_width;
  ! YouTubeGadget.height = v_height;
  ! YouTubeGadget.className = "SB_YouTubeGadget";
  If withfullscreen
    ! YouTubeGadget.setAttribute('allowFullScreen', '');
  EndIf
  If endposition
    video_endposition = "&end=" + Str(endposition)
  EndIf
  ! YouTubeGadget.style.cssText = "position: absolute; left: " + v_x + "px; top: " + v_y + "px; width: " + v_width + "px; height: " + v_height + "px;";
  ! YouTubeGadget.src = v_domain + "/embed/" + v_video_id + "?start=" + v_startposition + v_video_endposition + "&autoplay=" + v_autoplay + "&controls=" + v_withcontrol;
  ! v_windowid.content.appendChild(YouTubeGadget);
  
EndProcedure

;================================================== Beispielcode ==================================================

If OpenWindow(0, 0, 0, 820, 620, "Window", #PB_Window_ScreenCentered)
  YouTubeGadget(WindowID(0), 1, 10, 10, 800, 600, "cM8H5Tu3Hjk", 1, 120, 0, 1, 1, 0)
  
EndIf
@NicTheQuick
Bekomme ich Geld für die Werbung? :D
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Antworten