Page 1 of 1
JavaScript not enabled in Linux?
Posted: Sat Nov 01, 2014 11:35 pm
by bbanelli
Greetings to all,
very simple issue

Javascript seems to be disabled in WebGadget on Linux.
Works fine both on Windows and OS X. I've updated/installed both libwebkitgtk 1.0 and 3.0 but without any help. I tried importing
webkit_settings_get_enable_javascript() and/or
webkit_settings_set_enable_javascript() function but they seem to be unavailable in libwebkitgtk*.so.
Ubuntu 12.04 + PB 5.31
Any clues?
Re: JavaScript not enabled in Linux?
Posted: Sun Nov 02, 2014 12:19 pm
by Shardik
On my Ubuntu 14.04 x64 with KDE scripting languages are enabled by default in the WebGadget on PB 5.31 with GTK 2...
You may try to enable scripting languages with the following example code. It checks whether scripting languages are enabled and tries to enable scripting languages when disabled:
Code: Select all
EnableExplicit
#G_TYPE_INT = 6 << 2
ImportC ""
g_object_get_property(*Object.GObject, PropertyName.P-UTF8, *PropertyValue.GValue)
g_object_set_property(*Object.GObject, PropertyName.P-UTF8, *PropertyValue.GValue)
EndImport
ImportC "-lwebkitgtk-1.0"
webkit_web_settings_new()
webkit_web_view_set_settings(*WebkitWebView, *WebkitSettings)
EndImport
Define PropertyName.S
Define PropertyValue.GValue
Define WebkitSettings.I
OpenWindow(0, 200, 100, 600, 300, "WebGadget", #PB_Window_Invisible)
WebGadget(0, 10, 10, 580, 280, "")
; ----- Check if scripting languages are enabled
WebkitSettings = webkit_web_settings_new()
PropertyValue\g_type = #G_TYPE_INT
g_object_get_property(WebkitSettings, "enable-scripts", @PropertyValue)
If g_value_get_int_(@PropertyValue)
MessageRequester("Info", "Scripting languages are already enabled!")
Else
; ----- Enable scripting languages
g_value_set_int_(@PropertyValue, #True)
g_object_set_property(WebkitSettings, "enable-scripts", @PropertyValue)
; ----- Store changed settings
webkit_web_view_set_settings(GadgetID(0), WebkitSettings)
; ----- Check new settings
g_object_get_property(WebkitSettings, "enable-scripts", @PropertyValue)
If g_value_get_int_(@PropertyValue) = #True
MessageRequester("Info", "Scripting languages are now enabled!")
Else
MessageRequester("Error", "Sorry, but enabling of scripting languages failed!")
EndIf
EndIf
Re: JavaScript not enabled in Linux?
Posted: Sun Nov 02, 2014 1:51 pm
by bbanelli
Shardik wrote:On my Ubuntu 14.04 x64 with KDE scripting languages are enabled by default in the WebGadget on PB 5.31 with GTK 2...
You may try to enable scripting languages with the following example code. It checks whether scripting languages are enabled and tries to enable scripting languages when disabled
Hi Shardik,
thank you for the code, I finally understood how some other stuff works!

Your code didn't seem to do the trick (since it claims scripts are enabled however it still didn't work), but when I put it like this, it works.
Code: Select all
EnableExplicit
ImportC ""
g_object_set(*Object.GObject, PropertyName.P-UTF8, *PropertyValue.GValue, Null.b)
EndImport
ImportC "-lwebkitgtk-1.0" ;can be changed with ImportC "-lwebkitgtk-3.0" and gtk3 subsystem
webkit_web_settings_new()
webkit_web_view_set_settings(*WebkitWebView, *WebkitSettings)
EndImport
Define WebkitSettings.i
If OpenWindow(0, 0, 0, 1024, 768, "WebGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
WebGadget(0, 10, 10, 1004, 748, "https://www.whatismybrowser.com/")
WebkitSettings = webkit_web_settings_new()
g_object_set(WebkitSettings, "enable-scripts", #True, #Null)
webkit_web_view_set_settings (GadgetID(0), WebkitSettings)
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Thank you thousand times!

Re: JavaScript not enabled in Linux?
Posted: Sun Nov 02, 2014 9:11 pm
by Shardik
bbanelli wrote:Your code didn't seem to do the trick (since it claims scripts are enabled however it still didn't work),...
Thank you for your testing. You are right. My fault was in obtaining the default setting of WebKitGTK with webkit_web_settings_new() instead of getting the settings of PB's WebGadget. It seems that no WebKitGTK function exists to query the current settings of PB's WebGadget...
Because of scripting languages are enabled by default in WebKitGTK's settings, we may shorten our code even more:
Code: Select all
EnableExplicit
ImportC "-lwebkitgtk-1.0"
webkit_web_settings_new()
webkit_web_view_set_settings(*WebkitWebView, *WebkitSettings)
EndImport
Define WebkitSettings.I
OpenWindow(0, 100, 100, 1024, 800, "WebGadget", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
WebGadget(0, 10, 10, 1004, 780, "https://www.whatismybrowser.com/")
; ----- Get Webkit's default setting (with scripting languages enabled)
WebkitSettings = webkit_web_settings_new()
; ----- Store Webkit's default settings in WebGadget
webkit_web_view_set_settings(GadgetID(0), WebkitSettings)
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
The following code is an example on how to obtain a selection of important settings from WebKitGTK's default settings:
Code: Select all
EnableExplicit
#G_TYPE_INT = 6 << 2
ImportC ""
g_object_get_property(*Object.GObject, PropertyName.P-UTF8, *PropertyValue)
EndImport
ImportC "-lwebkitgtk-1.0"
webkit_web_settings_new()
EndImport
Define Info.S
Define WebkitSettings.I
Procedure.S GetWebkitSetting(PropertyName.S)
Shared WebkitSettings.I
Protected PropertyValue.GValue
PropertyValue\g_type = #G_TYPE_INT
g_object_get_property(WebkitSettings, PropertyName, @PropertyValue)
If g_value_get_int_(@PropertyValue)
ProcedureReturn "Yes"
Else
ProcedureReturn "No"
EndIf
EndProcedure
WebkitSettings = webkit_web_settings_new()
If WebkitSettings
Info + "Embedded scripting languages:" + #TAB$ + GetWebkitSetting("enable-scripts") + #CR$
Info + "Support for java applets: " + #TAB$ + #TAB$ + #TAB$ + GetWebkitSetting("enable-java-applet") + #CR$
Info + "Web audio: " + #TAB$ + #TAB$ + #TAB$ + #TAB$ + #TAB$ + #TAB$ + GetWebkitSetting("enable-webaudio") + #CR$
Info + "WebGL: " + #TAB$ + #TAB$ + #TAB$ + #TAB$ + #TAB$ + #TAB$ + #TAB$ + GetWebkitSetting("enable-webgl") + #CR$
Info + "Plugins: " + #TAB$ + #TAB$ + #TAB$ + #TAB$ + #TAB$ + #TAB$ + GetWebkitSetting("enable-plugins") + #CR$
Info + "Javascript can access clipboard:" + #TAB$ + GetWebkitSetting("javascript-can-access-clipboard") + #CR$
Info + "Javascript can open windows:" + #TAB$ + #TAB$ + GetWebkitSetting("javascript-can-open-windows-automatically") + #CR$
EndIf
MessageRequester("WebKit default settings", Info)
Re: JavaScript not enabled in Linux?
Posted: Sun Nov 02, 2014 10:20 pm
by bbanelli
Hi Shardik,
can you explain why are you using the following piece of code:
Why don't just write 24? Or you are using this to pad some bits or what?
Thanks for your time!
With my best,
Bruno
Re: JavaScript not enabled in Linux?
Posted: Mon Nov 03, 2014 9:43 am
by Shardik
bbanelli wrote:can you explain why are you using the following piece of code:
Why don't just write 24? Or you are using this to pad some bits or what?
Of course you are right: it would be easier to simply write 24 instead of 6 << 2...
But I have chosen to write 6 << 2 because the GObject Reference Manual contains the following type definition:
The macro G_TYPE_MAKE_FUNDAMENTAL() simply shifts the type value 2 bit positions to the left. In order for me to don't have to remember what the the macro G_TYPE_MAKE_FUNDAMENTAL() does, it's simpler to define 6 << 2. If I now have to define another one of the multitude of G_TYPEs, for example a string, I only have to change the value 6 to 16 and I obtain the type definition for string: