Webgadget und window.print
Re: Webgadget und window.print
Hast Du meinen Trick weiter oben mal versucht?
- TroaX
- Beiträge: 661
- Registriert: 08.03.2013 14:27
- Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Pop_OS! | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Pop_OS!
- Wohnort: NRW
- Kontaktdaten:
Re: Webgadget und window.print
Interessant. Da scheint es wohl keine Konsequente Linie zu geben. Bei dem einen scheint es zu gehen. Beim anderen nicht. Aber sowas habe ich schon vermutet. Musste ja auch feststellen, das die meisten Möglichkeiten mit dem Webgadget auch nur unter Windows funktionieren (Navigation-Callback, Kontext-Menü blockieren usw.).
Dann muss es am Ende eben wieder mal Windows Only sein.
@Kukulkan: Dein Trick beschreibt nur, wie du aus deiner Pure-Basic Anwendung heraus den Druckdialog des Gadgets triggern kannst. Der Kern des Dialogs liegt in der Javascript-Funktion window.print(). Ob du diese Funktion jetzt wie du erst in das Markup einsetzt und neu lädst oder du die Funktion mit einem Klick auf den Link ausführst, macht keinen Unterschied. In beiden Fällen soll der Dialog öffnen. Bei #NULL funktioniert dies aber nicht
Dann muss es am Ende eben wieder mal Windows Only sein.
@Kukulkan: Dein Trick beschreibt nur, wie du aus deiner Pure-Basic Anwendung heraus den Druckdialog des Gadgets triggern kannst. Der Kern des Dialogs liegt in der Javascript-Funktion window.print(). Ob du diese Funktion jetzt wie du erst in das Markup einsetzt und neu lädst oder du die Funktion mit einem Klick auf den Link ausführst, macht keinen Unterschied. In beiden Fällen soll der Dialog öffnen. Bei #NULL funktioniert dies aber nicht
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Pop_OS!
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Pop_OS!
NAS: Fritz.Box
Coding: Purebasic 6.04 | PHP | HTML | CSS | Javascript
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Pop_OS!
NAS: Fritz.Box
Coding: Purebasic 6.04 | PHP | HTML | CSS | Javascript
Re: Webgadget und window.print
Eventuell ist unter Linux noch immer JS as default deaktiviert...
Aus diesem Thread:
http://www.purebasic.fr/english/viewtop ... 13&t=68507
__________________________________________________
Domain angepasst
12.01.2018
RSBasic
Code: Alles auswählen
CompilerIf #PB_Compiler_Version > 540
ImportC "-lwebkitgtk-3.0"
CompilerElse
ImportC "-lwebkitgtk-1.0"
CompilerEndIf
webkit_web_settings_new()
webkit_web_view_set_settings(*WebkitWebView, *WebkitSettings)
EndImport
Procedure EnableJSforWebGadget(WebgadgetID.i)
; Enable JavaScript support in GTK3 WebGadgets
Protected WebkitSettings.i
; ----- Get Webkit's default setting (with scripting languages enabled by default)
WebkitSettings = webkit_web_settings_new()
; ----- Store Webkit's default settings in WebGadget
webkit_web_view_set_settings(GadgetID(WebgadgetID.i), WebkitSettings)
EndProcedure
http://www.purebasic.fr/english/viewtop ... 13&t=68507
__________________________________________________
Domain angepasst
12.01.2018
RSBasic
Zuletzt geändert von Kukulkan am 12.01.2018 13:22, insgesamt 1-mal geändert.
- TroaX
- Beiträge: 661
- Registriert: 08.03.2013 14:27
- Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Pop_OS! | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Pop_OS!
- Wohnort: NRW
- Kontaktdaten:
Re: Webgadget und window.print
Danke aber leider kann ich das zur Zeit selber nicht testen. Am WE wird jetzt erstmal der Silent-Webserver als Handler für das Gadget geschrieben.Dann scheue ich mal weiter ^^
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Pop_OS!
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Pop_OS!
NAS: Fritz.Box
Coding: Purebasic 6.04 | PHP | HTML | CSS | Javascript
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Pop_OS!
NAS: Fritz.Box
Coding: Purebasic 6.04 | PHP | HTML | CSS | Javascript
Re: Webgadget und window.print
mit EnableJSforWebGadget() funktioniert sowohl der alert() als auch der Druckdialog.
Code: Alles auswählen
CompilerIf #PB_Compiler_Version > 540
ImportC "-lwebkitgtk-3.0"
CompilerElse
ImportC "-lwebkitgtk-1.0"
CompilerEndIf
webkit_web_settings_new()
webkit_web_view_set_settings(*WebkitWebView, *WebkitSettings)
EndImport
Procedure EnableJSforWebGadget(WebgadgetID.i)
; Enable JavaScript support in GTK3 WebGadgets
Protected WebkitSettings.i
; ----- Get Webkit's default setting (with scripting languages enabled by default)
WebkitSettings = webkit_web_settings_new()
; ----- Store Webkit's default settings in WebGadget
webkit_web_view_set_settings(GadgetID(WebgadgetID.i), WebkitSettings)
EndProcedure
html.s = ""
html + "<!DOCTYPE html>" + #CRLF$
html + "<html>" + #CRLF$
html + " <head>" + #CRLF$
html + ~" <script type=\"text/javascript\">" + #CRLF$
html + ~" //alert(\"js\");" + #CRLF$
html + " window.print();" + #CRLF$
html + " </script>" + #CRLF$
html + " </head>" + #CRLF$
html + " " + #CRLF$
html + " <body>" + #CRLF$
html + " <h1>xxxxxxxxxx</h1>" + #CRLF$
html + " </body>" + #CRLF$
html + "</html>" + #CRLF$
filename.s = GetTemporaryDirectory() + "webGadgetTest.html"
fileproto.s = "file:///" + filename
Debug "filename: " + filename
Debug "fileproto: " + fileproto
file = CreateFile(#PB_Any, filename)
Debug "CreateFile: " + file
If file
WriteString(file, html, #PB_UTF8)
CloseFile(file)
Else
MessageRequester("error","can't write to file '" + outfile + "'")
EndIf
OpenWindow(0,50,50,800,600,"WebPrintTest")
WebGadget(1,0,0,800,600,fileproto)
EnableJSforWebGadget(1)
SetGadgetText(1, fileproto)
;EnableJSforWebGadget(1)
Repeat
Event = WindowEvent()
Until Event = #PB_Event_CloseWindow
del = DeleteFile(filename)
Debug "DeleteFile: " + del
- TroaX
- Beiträge: 661
- Registriert: 08.03.2013 14:27
- Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Pop_OS! | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Pop_OS!
- Wohnort: NRW
- Kontaktdaten:
Re: Webgadget und window.print
Klasse vielen Dank ^^
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Pop_OS!
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Pop_OS!
NAS: Fritz.Box
Coding: Purebasic 6.04 | PHP | HTML | CSS | Javascript
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Pop_OS!
NAS: Fritz.Box
Coding: Purebasic 6.04 | PHP | HTML | CSS | Javascript
Re: Webgadget und window.print
Ich habe bereits 2013 im englischen Forum unter Feature Requests and Wishlists den Vorschlag gemacht, den Navigation-Callback auch unter Linux und MacOS zu implementieren und dort auch gleich die Lösung für Linux und MacOS gezeigt. Technisch ist es mit WebKit kein Problem, alle bisher nur in Windows implementierten Funktionen auch für Linux und MacOS nachzurüsten, aber die Entwickler haben sich bisher leider nie die Mühe gemacht, dies auch mit WebKit zu implementieren, noch nicht einmal, wenn ich dies - wie in diesem und einigen anderen Fällen - bereits demonstriert hatte und ihnen damit den größten Teil der Arbeit (das Zusammensuchen der API-Funktionen und den Funktionstest als Proof of Concept) abgenommen habe.TroaX hat geschrieben:Musste ja auch feststellen, das die meisten Möglichkeiten mit dem Webgadget auch nur unter Windows funktionieren (Navigation-Callback, Kontext-Menü blockieren usw.).
Hier hatte ich 2015 schon einmal zusammengefasst, welche in Windows vorhandenen WebGadget-Features in Linux und MacOS fehlen und wie man in Linux und MacOS HTML-Code ins WebGadget lädt und einen Klick auf einen HTML-Button erkennt.
- TroaX
- Beiträge: 661
- Registriert: 08.03.2013 14:27
- Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Pop_OS! | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Pop_OS!
- Wohnort: NRW
- Kontaktdaten:
Re: Webgadget und window.print
Es geht nicht darum, das klicken eines Buttons auszuwerten. Es geht darum, die Submit-Frequenz an das Gadget zu schicken, damit es ein Formular abschickt. Dadurch kann es die Daten an den Silent-Server (oder Schattenserver) senden und die Daten an Purebasic weitergeben. Das Navigation-Callback will ich nutzen, damit das Gadget immer im Kontext dieses Schattenservers bleibt. Der Schattenserver selbst soll das ganze herumgeplänkel mit HTML als Datei speichern und über Gadget aufrufen aushebeln und kann gleichzeitig größere Textmengen aus dem Gadget entgegennehmen (was ich früher mit dem Navigation-Callback, einem GET-Formular und den URL-Prozeduren gelöst habe, aber nur eine relativ kleine Datenmenge verarbeiten konnte). Man könnte es auch realisieren, in dem man einen HTML-Button nutzt. Aber dann müsste der komplette Dialog in selbigen sein. Eigentlich wollte ich das Gadget als Host für TinyMCE nutzen und Richtext mit allem, was möglich ist (Tabellen, Bildimport usw.), realisieren. So könnte man alle anderen Eingaben in nativen Gadgets machen und nur der Richtext kommt aus dem Wegbadget.Shardik hat geschrieben:Hier hatte ich 2015 schon einmal zusammengefasst, welche in Windows vorhandenen WebGadget-Features in Linux und MacOS fehlen und wie man in Linux und MacOS HTML-Code ins WebGadget lädt und einen Klick auf einen HTML-Button erkennt.
Vielleicht ist es so besser erklärt
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Pop_OS!
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Pop_OS!
NAS: Fritz.Box
Coding: Purebasic 6.04 | PHP | HTML | CSS | Javascript
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Pop_OS!
NAS: Fritz.Box
Coding: Purebasic 6.04 | PHP | HTML | CSS | Javascript
- TroaX
- Beiträge: 661
- Registriert: 08.03.2013 14:27
- Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Pop_OS! | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Pop_OS!
- Wohnort: NRW
- Kontaktdaten:
Re: Webgadget und window.print
Soo auch das letzte Problem ist gelöst. Ich mache das zwar über Javascript. Aber trotzdem kann man es triggern, in dem man über das Javascript den Wechsel des Anchor-Hashes abfängt. Diesen kann man sich direkt auch ausgeben lassen oder auswerten. Wenn der Hash stimmt, dann wird das Formular mit Javascript einfach abgesendet, der Schattenserver nimmt die Daten an und gibt sie an PB weiter.
PB:
test.html:
Damit sollte das, was ich vorhabe, problemlos funlktionieren ^^
PB:
Code: Alles auswählen
OpenWindow(0,100,100,800,650,"TEST")
WebGadget(1,0,0,800,600,"file://D:/test.html")
ButtonGadget(2,5,605,150,40,"Klick")
Repeat
Event = WindowEvent()
Button = EventGadget()
If Button = 2
SetGadgetText(1,"file://D:/test.html#test")
EndIf
Until Event = #PB_Event_CloseWindow
Code: Alles auswählen
<!DOCTYPE html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>Beispiel: beforeunload Event</title>
</head>
<body>
<h1>Beispiel: beforeunload Event</h1>
<main>
<p>Verlassen Sie die Seite, damit der beforeunload-Event-Handler ausgelöst wird.</p>
</main>
<script async>
document.addEventListener('DOMContentLoaded', function () {
window.addEventListener('hashchange', function() {
alert(location.hash);
},false);
});
</script>
</body>
</html>
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Pop_OS!
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Pop_OS!
NAS: Fritz.Box
Coding: Purebasic 6.04 | PHP | HTML | CSS | Javascript
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Pop_OS!
NAS: Fritz.Box
Coding: Purebasic 6.04 | PHP | HTML | CSS | Javascript