[Bug 51241] New: VBScript code to detect a VBScript capable browser doesn't work in Wine's mshtml/vbscript
WineHQ Bugzilla
wine-bugs at winehq.org
Tue Jun 8 12:00:28 CDT 2021
https://bugs.winehq.org/show_bug.cgi?id=51241
Bug ID: 51241
Summary: VBScript code to detect a VBScript capable browser
doesn't work in Wine's mshtml/vbscript
Product: Wine
Version: 6.10
Hardware: x86-64
OS: Linux
Status: NEW
Severity: normal
Priority: P2
Component: mshtml
Assignee: wine-bugs at winehq.org
Reporter: dmitry at baikal.ru
CC: jacek at codeweavers.com
Distribution: ---
I'm not sure how to separate this problem between mshtml/vbscript since one
part depends on another one.
I have a Web application that uses the technique to detect a VBScript capable
browser described in
https://stackoverflow.com/questions/22750096/detect-if-browser-is-vbscript-capable
The JScript code embedded in an HTML page looks like this:
var supportsVb = (function() {
var supports = false;
var vb = document.createElement('script');
vb.type="text/vbscript";
try {
vb.innerText="Err.Raise";
} catch (e) {
supports = true;
}
return supports
})()
The problem is that this doesn't generate an exception and as a result variable
'supports' contains 'false'.
First part of the problem is that 'vb.innerText="Err.Raise";' doesn't set the
text for HTMLScriptElement and as a result the VBScript code "Err.Raise" is not
executed. I've fixed this in IHTMLElement_put_innerText() by checking the
HTMLElement tag, and if it's "SCRIPT" forward the call to
IHTMLScriptElement_put_text().
After that IHTMLScriptElement_put_text() refuses to execute the script because
it doesn't have a parent node. I've fixed this by removing the check for parent
node in IHTMLScriptElement_put_text().
After that VBScript engine gets actually called to interpret "Err.Raise",
however it doesn't generate an exception. Note, that "Err.Raise" doesn't have
the arguments, and according to the tests that's correct behaviour, and this
leads to VBSE_FUNC_ARITY_MISMATCH (450) being returned by Raise(), however even
if passed any error code as an argument Raise() doesn't generate an exception
that could be catched by the JScript code.
I'll attach appropriate log snippets and my hacks/fixes.
--
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.
More information about the wine-bugs
mailing list