[erl.] WebGadget übergibt falsche Url an StringGadget
Verfasst: 12.03.2016 20:47
Heute mal wieder meinen Browser rausgepackt und weiter gemacht.
Nun habe ich zufällig festgestellt, dass meine übergebenen Werte durch @NavigationCallback(), um die aktuelle URL in einem StringGadget anzeigen zu lassen nicht der tatsächlichen URL entsprechen
.
Wenn ich also die Seite (hier ist es mir aufgefallen):
http://marketplace.xbox.com/de-AT/Games/GamesOnDemand
aufrufe, lädt es die Seite normal und dann wird jedoch eine andere URL angezeigt, diese:
http://c1.microsoft.com/c.gif?DI=4050&did=1&t=
Rufe ich die Seite in einem normalen Browser auf, wird die URL nicht verunglimpft und es wird auch das im Adressfeld angezeigt, was ich aufrufe.
Beispiel wäre noch, ich klicke im Gameshop auf GTA V:
dann sehe ich wie die Seite mit richtiger URL geladen wird und es wird auch kurz die richtige URL angezeigt in meinem StringGadget.
Jedoch, sobald die Seite im WebGadget fertig geladen wurde, springt die URL wieder auf diese:
http://c1.microsoft.com/c.gif?DI=4050&did=1&t=
Weis jemand Rat woran das liegt? Im normalen Browser funktioniert die Seite und es wird nicht in der Adressleiste diese komische URL erzeugt und angezeigt.
Muss man beim @NavigationCallback() noch feilen?
hier mein abgespeckter Test Code:
Danke Euch
Nun habe ich zufällig festgestellt, dass meine übergebenen Werte durch @NavigationCallback(), um die aktuelle URL in einem StringGadget anzeigen zu lassen nicht der tatsächlichen URL entsprechen

Wenn ich also die Seite (hier ist es mir aufgefallen):
http://marketplace.xbox.com/de-AT/Games/GamesOnDemand
aufrufe, lädt es die Seite normal und dann wird jedoch eine andere URL angezeigt, diese:
http://c1.microsoft.com/c.gif?DI=4050&did=1&t=
Rufe ich die Seite in einem normalen Browser auf, wird die URL nicht verunglimpft und es wird auch das im Adressfeld angezeigt, was ich aufrufe.
Beispiel wäre noch, ich klicke im Gameshop auf GTA V:
dann sehe ich wie die Seite mit richtiger URL geladen wird und es wird auch kurz die richtige URL angezeigt in meinem StringGadget.
Jedoch, sobald die Seite im WebGadget fertig geladen wurde, springt die URL wieder auf diese:
http://c1.microsoft.com/c.gif?DI=4050&did=1&t=
Weis jemand Rat woran das liegt? Im normalen Browser funktioniert die Seite und es wird nicht in der Adressleiste diese komische URL erzeugt und angezeigt.
Muss man beim @NavigationCallback() noch feilen?
hier mein abgespeckter Test Code:
Code: Alles auswählen
;
; just a simple purebasic html5 web browser by inc.aka udg
;
; including home button, forward, back, reload/ refresh, close
; address url field, page load progress bar
;
; PB 5.30 Windows 7
;
;{ Keyboard Shortcut Enumerations
Enumeration 1
#OLECMDID_OPEN
#OLECMDID_NEW
#OLECMDID_SAVE
#OLECMDID_SAVEAS
#OLECMDID_SAVECOPYAS
#OLECMDID_PRINT
#OLECMDID_PRINTPREVIEW
#OLECMDID_PAGESETUP
#OLECMDID_SPELL
#OLECMDID_PROPERTIES
#OLECMDID_CUT
#OLECMDID_COPY
#OLECMDID_PASTE
#OLECMDID_PASTESPECIAL
#OLECMDID_UNDO
#OLECMDID_REDO
#OLECMDID_SELECTALL
#OLECMDID_CLEARSELECTION
#OLECMDID_ZOOM
#OLECMDID_GETZOOMRANGE
#OLECMDID_UPDATECOMMANDS
#OLECMDID_REFRESH
#OLECMDID_STOP
#OLECMDID_HIDETOOLBARS
#OLECMDID_SETPROGRESSMAX
#OLECMDID_SETPROGRESSPOS
#OLECMDID_SETPROGRESSTXT
#OLECMDID_SETTITLE
#OLECMDID_SETDOWNLOADSTATE
#OLECMDID_STOPDOWNLOAD
EndEnumeration
Enumeration 0
#OLECMDEXECOPT_DODEFAULT
#OLECMDEXECOPT_PROMPTUSER
#OLECMDEXECOPT_DONTPROMPTUSER
#OLECMDEXECOPT_SHOWHELP
EndEnumeration
;}
Enumeration
#MainForm
;WebGadget
#WebGadget
#Btn_CloseWebGadget
#Btn_min_to_Tray
#Btn_Fnt_min_to_Tray
#Font_Btn_CloseWebGadget
#Btn_Reload
#Font_Btn_Reload
#Btn_Nav_Back
#Font_Btn_Nav_Back
#Btn_Nav_Frwd
#Font_Btn_Nav_Frwd
#Show_Current_Url
#Show_Current_back
#Font_Current_Url
#Btn_Start_Browsing
#Btn_Home
#Font_Start_Browsing
#Separater
#Separater2
#Separater3
#ProgressBar
#Txt_Browser
EndEnumeration
;Image Plugins
UsePNGImageDecoder()
Define Event
Global WebObject.IWebBrowser2
; load a URL on start and set it as default
Global Url.s="http://www.google.com"
; define home button URL
Global HomeUrl.s=Url
;move window- hold left mouse trigger down
Procedure WinCallback(hWnd, uMsg, wParam, lParam)
Protected result = #PB_ProcessPureBasicEvents
Select uMsg
Case #WM_LBUTTONDOWN
SendMessage_(hWnd, #WM_NCLBUTTONDOWN, #HTCAPTION, 0)
EndSelect
ProcedureReturn result
EndProcedure
;- Read current URL
Procedure NavigationCallback(Gadget, NewUrl.s)
If NewUrl <> Url
;SetGadgetText(#Show_Current_Url, GetGadgetText(#Webgadget))
SetGadgetText(#Show_Current_Url, NewUrl)
Url = NewUrl
EndIf
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
Procedure SuppressJavaScriptErrorMessages(WebGadget)
Protected MyWebGadget.IWebBrowser2
MyWebGadget = GetWindowLongPtr_(GadgetID(#Webgadget), #GWL_USERDATA)
MyWebGadget\put_Silent(#True) ; Suppress JavaScript error messages.
EndProcedure
Procedure MainFormShow()
hwnd=OpenWindow(#MainForm, 0, 0, 1280, 770,"WebGadget",#PB_Window_ScreenCentered|#PB_Window_BorderLess)
SetWindowColor(#MainForm, RGB(15, 124, 15))
; show current URL in Address - Input-Field
TextGadget(#Show_Current_back, 127, 0, 503, 31," ")
SetGadgetColor(#Show_Current_back, #PB_Gadget_BackColor, RGB(11, 96, 13)) ;TXT Background Color
StringGadget(#Show_Current_Url, 130, 7, 500, 20, Url, #PB_String_BorderLess)
SetGadgetColor(#Show_Current_Url, #PB_Gadget_FrontColor, RGB(255, 255, 255));TXT Color
SetGadgetColor(#Show_Current_Url, #PB_Gadget_BackColor, RGB(11, 96, 13)) ;TXT Background Color
SetGadgetFont(#Show_Current_Url, LoadFont(#Font_Current_Url, "Lucida", 10, #PB_Font_HighQuality)) ; Button Font
WebGadget(#Webgadget, 1, 37, 1278, 732, "http://www.google.com")
ProgressBarGadget(#ProgressBar, 1, 32, 1278, 5, 0, 0)
SuppressJavaScriptErrorMessages(#Webgadget)
;- Add Keyboard Shortcuts
WebObject.IWebBrowser2 = GetWindowLongPtr_(GadgetID(#WebGadget),#GWLP_USERDATA)
AddKeyboardShortcut(#MainForm,#PB_Shortcut_Control|#PB_Shortcut_X,Asc("x"))
AddKeyboardShortcut(#MainForm,#PB_Shortcut_Control|#PB_Shortcut_C,Asc("c"))
AddKeyboardShortcut(#MainForm,#PB_Shortcut_Control|#PB_Shortcut_V,Asc("v"))
AddKeyboardShortcut(#MainForm,#PB_Shortcut_Control|#PB_Shortcut_A,Asc("a"))
AddKeyboardShortcut(#MainForm,#PB_Shortcut_Control|#PB_Shortcut_Z,Asc("z"))
AddKeyboardShortcut(#MainForm,#PB_Shortcut_Control|#PB_Shortcut_Y,Asc("y"))
AddKeyboardShortcut(#MainForm,#PB_Shortcut_Control|#PB_Shortcut_Shift|#PB_Shortcut_Z,Asc("y"))
AddKeyboardShortcut(#MainForm, #PB_Shortcut_Return,1)
;- Btn Back
TextGadget(#Btn_Nav_Back, 0, 0, 30, 31, "<",#SS_CENTERIMAGE|#SS_NOTIFY|#SS_CENTER)
SetGadgetFont(#Btn_Nav_Back, LoadFont(#Font_Btn_Nav_Back, "Lucida", 10, #PB_Font_HighQuality)) ; Button Font
SetGadgetColor(#Btn_Nav_Back, #PB_Gadget_BackColor, RGB(15, 124, 15)) ;TXT Background Color
SetGadgetColor(#Btn_Nav_Back, #PB_Gadget_FrontColor, RGB(255, 255, 255)) ;TXT Color
;- Separator
TextGadget(#Separater, 31, 6, 1, 18, "")
SetGadgetColor(#Separater, #PB_Gadget_BackColor, RGB(31, 77, 106)) ;TXT Background Color
;- Btn Forward
TextGadget(#Btn_Nav_Frwd, 32, 0, 30, 31, ">",#SS_CENTERIMAGE|#SS_NOTIFY|#SS_CENTER)
SetGadgetFont(#Btn_Nav_Frwd, LoadFont(#Font_Btn_Nav_Frwd, "Lucida", 10, #PB_Font_HighQuality)) ; Button Font
SetGadgetColor(#Btn_Nav_Frwd, #PB_Gadget_BackColor, RGB(15, 124, 15)) ;TXT Background Color
SetGadgetColor(#Btn_Nav_Frwd, #PB_Gadget_FrontColor, RGB(255, 255, 255)) ;TXT Color
;- Btn Reload
TextGadget(#Btn_Reload, 60, 0, 60, 31, "refresh",#SS_CENTERIMAGE|#SS_NOTIFY|#SS_CENTER)
SetGadgetFont(#Btn_Reload, LoadFont(#Font_Btn_Reload, "Lucida", 10, #PB_Font_HighQuality)) ; Button Font
SetGadgetColor(#Btn_Reload, #PB_Gadget_BackColor, RGB(15, 124, 15)) ;TXT Background Color
SetGadgetColor(#Btn_Reload, #PB_Gadget_FrontColor, RGB(255, 255, 255)) ;TXT Color
;- Btn Start Browsing
TextGadget(#Btn_Start_Browsing, 635, 0, 20, 31, ">>",#SS_CENTERIMAGE|#SS_NOTIFY|#SS_CENTER)
SetGadgetFont(#Btn_Start_Browsing, LoadFont(#Font_Start_Browsing, "Lucida", 10, #PB_Font_HighQuality)) ; Button Font
SetGadgetColor(#Btn_Start_Browsing, #PB_Gadget_BackColor, RGB(15, 124, 15)) ;TXT Background Color
SetGadgetColor(#Btn_Start_Browsing, #PB_Gadget_FrontColor, RGB(255, 255, 255)) ;TXT Color
;- Separator2
TextGadget(#Separater2, 670, 6, 1, 18, "")
SetGadgetColor(#Separater2, #PB_Gadget_BackColor, RGB(31, 77, 106)) ;TXT Background Color
;- Btn Home
TextGadget(#Btn_Home, 680, 0, 50, 31, "home",#SS_CENTERIMAGE|#SS_NOTIFY|#SS_CENTER)
SetGadgetFont(#Btn_Home, LoadFont(#Font_Start_Browsing, "Lucida", 10, #PB_Font_HighQuality)) ; Button Font
SetGadgetColor(#Btn_Home, #PB_Gadget_BackColor, RGB(15, 124, 15)) ;TXT Background Color
SetGadgetColor(#Btn_Home, #PB_Gadget_FrontColor, RGB(255, 255, 255)) ;TXT Color
;- TxT: Browser by inc in 2k16
TextGadget(#Txt_Browser, 1000, 0, 250, 31, "Browser by inc in 2k16",#SS_CENTERIMAGE) ;x;y;länge;höhe
SetGadgetFont(#Btn_Nav_Frwd, LoadFont(#Font_Btn_Nav_Frwd, "Lucida", 10, #PB_Font_HighQuality)) ; Button Font
SetGadgetColor(#Txt_Browser, #PB_Gadget_FrontColor, RGB(13, 82, 16));TEXT FARBE
SetGadgetColor(#Txt_Browser, #PB_Gadget_BackColor, RGB(15, 124, 15)) ;Hintergrund FARBE
;- Btn Close WEbGadget Window
TextGadget(#Btn_CloseWebGadget, 1220, 0, 60, 31, "close",#SS_CENTERIMAGE|#SS_NOTIFY|#SS_CENTER)
SetGadgetFont(#Btn_CloseWebGadget, LoadFont(#Btn_CloseWebGadget, "Lucida", 10, #PB_Font_HighQuality)) ; Button Font
SetGadgetColor(#Btn_CloseWebGadget, #PB_Gadget_BackColor, RGB(15, 124, 15)) ;TXT Background Color
SetGadgetColor(#Btn_CloseWebGadget, #PB_Gadget_FrontColor, RGB(255, 255, 255)) ;TXT Color
;- Separator3
TextGadget(#Separater3, 1217, 6, 1, 18, "")
SetGadgetColor(#Separater3, #PB_Gadget_BackColor, RGB(31, 77, 106)) ;TXT Background Color
;- Btn minimize to tray
TextGadget(#Btn_min_to_Tray, 1186, 0, 20, 31, "__",#SS_CENTERIMAGE|#SS_NOTIFY|#SS_CENTER)
SetGadgetFont(#Btn_min_to_Tray, LoadFont(#Btn_Fnt_min_to_Tray, "Lucida", 10, #PB_Font_HighQuality)) ; Button Font
SetGadgetColor(#Btn_min_to_Tray, #PB_Gadget_BackColor, RGB(15, 124, 15)) ;TXT Background Color
SetGadgetColor(#Btn_min_to_Tray, #PB_Gadget_FrontColor, RGB(255, 255, 255)) ;TXT Color
myBrowser.IWebBrowser2 = GetWindowLong_(GadgetID(#WebGadget), #GWL_USERDATA) ;callback for Keyboard shortcuts
SetGadgetAttribute(#WebGadget, #PB_Web_NavigationCallback, @NavigationCallback())
EndProcedure
SetWindowCallback(@WinCallback())
MainFormShow()
; MAIN
Repeat
Event = WaitWindowEvent()
EventGadget = EventGadget()
EventType = EventType()
;display progressbar load status
Select Event
Case #PB_Event_Gadget
Select EventGadget()
Case #WebGadget
Select EventType()
Case #PB_EventType_DownloadStart
Case #PB_EventType_DownloadProgress
SetGadgetAttribute(#ProgressBar, #PB_ProgressBar_Maximum, GetGadgetAttribute(#WebGadget, #PB_Web_ProgressMax))
SetGadgetState(#ProgressBar, GetGadgetAttribute(#WebGadget, #PB_Web_Progress))
Case #PB_EventType_DownloadEnd
EndSelect
EndSelect
EndSelect
;- Button Functions
If Event = #PB_Event_Gadget
Select EventGadget()
;- BTN CloseWebGadget
Case #Btn_CloseWebGadget
CloseWindow(#MainForm)
;- Web Navigation - Back - Forward - Reload - Browse - Home
Case #Btn_Nav_Back
SetGadgetState(#WebGadget, #PB_Web_Back)
Case #Btn_Nav_Frwd
SetGadgetState(#WebGadget, #PB_Web_Forward)
Case #Btn_Reload
SetGadgetState(#WebGadget, #PB_Web_Refresh)
Case #Btn_Start_Browsing
SetGadgetText(#Webgadget, GetGadgetText(#Show_Current_Url))
Case #Btn_Home
SetGadgetText(#Webgadget, HomeUrl)
Case #Btn_min_to_Tray
SetWindowState(#MainForm, #PB_Window_Minimize)
EndSelect
EndIf
; KeyboardShortcuts
Select Event
Case #PB_Event_Menu
Select EventMenu()
Case 'c'
WebObject\ExecWB(#OLECMDID_COPY,#OLECMDEXECOPT_DONTPROMPTUSER,0,0)
Case 'v'
WebObject\ExecWB(#OLECMDID_PASTE,#OLECMDEXECOPT_DONTPROMPTUSER,0,0)
Case 1
SetGadgetText(#Webgadget, GetGadgetText(#Show_Current_Url))
EndSelect
EndSelect
Until IsWindow(#MainForm)=0 And IsWindow(Fenster_ID)=0
Danke Euch