http://gambaswiki.org/bugtracker/edit?object=BUG.823&from=L21haW4-

Jonathan LEE reported a new bug.

Summary
-------

Strange Eval Behavior in gb.qt4.webkit

Type             : Bug
Priority         : Low
Gambas version   : 3.8
Product          : QT4 component


Description
-----------

So with the example WebBrowser I have the following assigned to the ZoomIn 
control's Click event:

Public Sub btnZoomIn_Click()
  GetView().Eval("var oDoc; if(document.getElementById(\"gsft_main\")) { oDoc = 
document.getElementById(\"gsft_main\").contentWindow.document; }")
End

This is run against a Service-Now website, and upon clicking the Zoom button, 
the program freezes for about 10 seconds while this simple script finishes 
being parsed.

If I change the code to this...

Public Sub btnZoomIn_Click()
  GetView().Eval("var oDoc; if(document.getElementById(\"gsft_main\")) { oDoc = 
document.getElementById(\"gsft_main\").contentWindow.document; } 1 = 1;")
End

...the script finishes immediately.

I tried to make this example as simple as possible to make it easier to 
duplicate, but this is actually originally concerning a much larger project.

Running this same javascript in the console of Chrome or Firefox executes 
immediately, so it seems to be something specific to GAMBAS' implementation of 
WebKit in this component. The problem can be replicated on the public sandbox 
of Service-Now.

The problem can also be duplicated on this site with some tweaking --> 
http://www.angelfire.com/super/badwebs/

Just for quick comparison if you have this for Zoom In...

Public Sub btnZoomIn_Click()
  
  GetView().Eval("var oDoc; if(document.getElementsByName(\"main\")[0]) { oDoc 
= document.getElementsByName(\"main\")[0].contentWindow.document; }")
  GetView().Eval("alert('Done');")
  
End

...and this for Zoom Out...

Public Sub btnZoomOut_Click()

  GetView().Eval("var oDoc; if(document.getElementsByName(\"main\")[0]) { oDoc 
= document.getElementsByName(\"main\")[0].contentWindow.document; } 1 = 1;")
  GetView().Eval("alert('Done');")

End

...you'll notice that on "The World's Worst Website" when you click the Zoom In 
button it takes a good 10 seconds to get the "Done" alert, while it pops up 
immediately if you click Zoom Out instead.

Seems odd that adding an arbitrary assignment statement (like "1 = 1") would 
overcome the performance issue, but that's what seems to happen.


System information
------------------

[System]
Gambas=3.8.2
OperatingSystem=Linux
Kernel=3.13.0-24-generic
Architecture=x86_64
Distribution=Linux Mint 17.2 Rafaela
Desktop=GNOME
Theme=Plastique
Language=en_US.UTF-8
Memory=7984M

[Libraries]
Cairo=libcairo.so.2.11301.0
Curl=libcurl.so.4.3.0
DBus=libdbus-1.so.3.7.6
GStreamer=libgstreamer-0.10.so.0.30.0
GStreamer=libgstreamer-1.0.so.0.204.0
GTK+2=libgtk-x11-2.0.so.0.2400.23
GTK+3=libgtk-3.so.0.1000.8
OpenGL=libGL.so.1.2.0
Poppler=libpoppler.so.44.0.0
QT4=libQtCore.so.4.8.6
QT5=libQt5Core.so.5.2.1
SDL=libSDL-1.2.so.0.11.4

[Environment]
CINNAMON_VERSION=2.6.13
CLUTTER_BACKEND=x11
DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-eUd0Qo1FQP,guid=7559ca448d3849821b3ada8e562550e7
DEFAULTS_PATH=/usr/share/gconf/cinnamon.default.path
DESKTOP_SESSION=cinnamon
DISPLAY=:0
GB_GUI=gb.qt4
GDMSESSION=cinnamon
GDM_XSERVER_LOCATION=local
GIO_LAUNCHED_DESKTOP_FILE=/usr/share/applications/gambas3.desktop
GIO_LAUNCHED_DESKTOP_FILE_PID=20400
GJS_DEBUG_OUTPUT=stderr
GJS_DEBUG_TOPICS=JS ERROR;JS LOG
GNOME_DESKTOP_SESSION_ID=this-is-deprecated
GNOME_KEYRING_CONTROL=/run/user/1000/keyring-yH21vu
GPG_AGENT_INFO=/run/user/1000/keyring-yH21vu/gpg:0:1
HOME=<home>
JAVA_HOME=/usr/lib/jvm/default-java
LANG=en_US.UTF-8
LOGNAME=<user>
MANDATORY_PATH=/usr/share/gconf/cinnamon.mandatory.path
MDMSESSION=cinnamon
MDM_LANG=en_US.UTF-8
MDM_XSERVER_LOCATION=local
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
PWD=<home>
SESSION_MANAGER=local/<hostname>:@/tmp/.ICE-unix/1435,unix/<hostname>:/tmp/.ICE-unix/1435
SHELL=/bin/bash
SSH_AGENT_PID=1777
SSH_AUTH_SOCK=/run/user/1000/keyring-yH21vu/ssh
TEXTDOMAIN=im-config
TEXTDOMAINDIR=/usr/share/locale/
TZ=:/etc/localtime
USER=<user>
USERNAME=<user>
WINDOWPATH=8
XAUTHORITY=<home>/.Xauthority
XDG_CONFIG_DIRS=/etc/xdg/xdg-cinnamon:/etc/xdg
XDG_CURRENT_DESKTOP=X-Cinnamon
XDG_DATA_DIRS=/usr/share/cinnamon:/usr/share/gnome:/usr/local/share/:/usr/share/:/usr/share/mdm/
XDG_RUNTIME_DIR=/run/user/1000
XDG_SEAT=seat0
XDG_SESSION_COOKIE=db14662cac502ddc972d861753a16b0d-1445286116.905481-1424729098
XDG_SESSION_DESKTOP=cinnamon
XDG_SESSION_ID=c2
XDG_VTNR=8



------------------------------------------------------------------------------
_______________________________________________
Gambas-user mailing list
Gambas-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/gambas-user

Reply via email to