WebKitX ActiveX wraps Chromium Embedded Framework (CEF3) for use with OLE/COM languages. Chromium Embedded Framework encapsulates WebKit Blink HTML5 Renderer and Google V8 JavaScript Engine. This is a production-grade stable component for commercial use that will truly add HTML5 features in your Desktop and Terminal Applications.

JavaScriptX ActiveX wraps Google V8 JavaScript Engine for use with OLE/COM languages. The ActiveX is a binary replacement of Microsoft Script Control for the JavaScript scripting language. V8 compiles JavaScript directly to native machine code and the ActiveX provides binding between COM objects and JavaScript. This is a production-grade stable component for commercial use for providing modern scripting to your Desktop and Terminal Applications.

 

Compatibility

Our software is intended for industrial use and has been tested with the following Integrated Development Environments:

 

Downloads

Product Details Released Architectures CEF3 / V8 Download Installation Package
WebKitX_CEF3_ActiveX_x86_v4.0.0.14679.exe
  • For 32-bit Application Development
  • Windows 7, 8, 10 (32-bit or 64-bit)
  • Terminal Ready: Windows 7 POS Edition
  • Blink HTML5 Rendering Engine
  • WebGL v1, v2
  • H.264 / AAC Video
  • WebRTC
  • With async/await Support
  • Peper Flash Player v32.0.0.101 (32-bit)
  • 4 GB RAM Recommended
  • 175 MB Redistributable
  • Commercial Use License
  • Bounty Support
  • 30-day Evaluation
27 Jan 2021 x86 & x64
32-bit OCX

VC++ 2017
Redist
Chromium Version: 80
Git Branch: 3987.149
Released: Mar 2020
Download
MD5: c1110781239f11d6b5a1a42ba63ad7d0
SHA-1: 0688ba2565f494efc91b3d1f0938843dc7afdaa8
WebKitX_CEF3_ActiveX_x64_v4.0.0.14679.exe
  • For 64-bit Application Development
  • Windows 7, 8, 10 (64-bit)
  • Terminal Ready: Windows 7 POS Edition
  • Blink HTML5 Rendering Engine
  • WebGL v1, v2
  • H.264 / AAC Video
  • WebRTC
  • With async/await Support
  • 8 GB RAM Recommended
  • Peper Flash Player v32.0.0.101 (64-bit)
  • 210 MB Redistributable
  • Commercial Use License
  • Bounty Support
  • 30-day Evaluation
27 Jan 2021 x64
64-bit OCX

VC++ 2017
Redist
Chromium Version: 80
Git Branch: 3987.149
Released: Mar 2020
Download
MD5: c0c7f0a2665e832da8ad257a0893061c
SHA-1: 4536d555d65f359b913880f290cc2be46a087df3
WebKitX_CEF3_ActiveX_WinXP_x86_v2.2.0.14683.exe
  • For 32-bit Application Development
  • Windows XP x86 SP3 (32-bit)
  • Windows Vista x86 (32-bit)
  • Terminal Ready: Windows XP POS & Embedded Editions
  • Tested with unofficial SP4 (Major Geeks)
  • Tested with XP POS Windows Updates up to 12/2018
  • WebKit HTML5 Rendering Engine
  • With WebGL 1.0 Support
  • 2 GB RAM Recommended
  • Peper Flash Player v29.0.0.113 (32-bit)
  • 55 MB Redistributable
  • Commercial Use License
  • Bounty Support (Limited)
  • 30-day Evaluation
27 Jan 2021 x86
32-bit OCX

VC++ 2015
Redist
Chromium Version: 49
Git Branch: 2623.1401
Released: May 2016
Download
MD5: 1a4dee4e56b3c9afa8fd848564b88fa5
SHA-1: 17f406587fccbfa226c8c5e5bfac463d089fe4e3

Stable production-grade JavaScriptX version 1.x

Product Details Released Architectures CEF3 / V8 Download Installation Package
JavaScriptX_ActiveX_x86_v1.1.0.612.exe
  • For 32-bit Application Development
  • Windows 7, 8, 10 (32-bit or 64-bit)
  • Terminal Ready: Windows 7 POS Edition
  • 1 GB RAM Recommended
  • 17 MB Redistributable
  • Commercial Use License
  • Bounty Support
10 Jun 2020 x86 & x64
32-bit OCX

VC++ 2017
Redist
V8 Engine: 7.3.492.27
Git Branch: v8-73
Released: Feb 2019
Download
MD5: d4d4d5b90c12f6e0c759877b6a6b552e
SHA-1: 98f86a117a01f385ab7811cb5a916919a58fa1fb
 

Release Notes

Jan 2021

  • Behaviour Change Introducing Perpetual Terminal License for Independent Software Vendors that enables non-expiring terminal licensing.
    The feature is offered to Independent Software Vendors (ISV) selling software off-the-shelf or from the Internet. Customers with Professional or Enterprise Licensing contracts and visible ISV profile please contact info@mobilefx.com to upgrade your contracts.
  • Hot Fix Hot Fixed OLE license embedding bug that was introduced on Dec 2020, causing embedded licenses not to load.
  • Hot Fix Fixed add/remove breakpoint bug in NodeJS and V8 debuggers.
  • New Feature Added DebuggerClearBreakpoints method that clears breakpoint commands (add or remove) from debugger command queue.
  • New Feature Added DebuggerReset method that resets debugger state of NodeJS and V8 debuggers.
  • New Feature Added OnResourceLoadComplete event that fires when OpenRequest method completes.
  • New Feature Added Settings.disable_onresourceloadcomplete_event property (defaut is true) that controls OnResourceLoadComplete event firing.

Dec 2020

  • Hot Fix Fixed bug introduced in Zoom property causing 15 sec delay during initialization in VFP (and possible other IDE).
  • Hot Fix Fixed bug in AddObject IDispatch invocation that was passing arguments to native COM object in reverse order.
  • Hot Fix Fixed bug in AddObject, COM-V8 proxies now persist between page loads.
  • Hot Fix Fixed bug in ReleaseObject, now being called timely on control destructor releasing AddObject references.
  • Hot Fix Improved WebSockets threading and initialization resulting to much more responsive main thread and smoother overall initialization.
  • Hot Fix Fixed WebSocket closing sequence allowing it to transmit termination packet to V8 or node.js debuggers.
  • New Feature Added settings.enable_devtools_ws_events to prevent DevTools WebSocket events from firing to main thread in not need to.
  • New Feature Added settings.app_path for defining the application path which becomes available in JavaScript under window.APP_PATH variable.
  • New Feature Added settings.enable_script_parsed_ws_events that controls emition of OnDebuggerScriptParsed event.
  • New Feature Added settings.nodejs_executable that defines the absolute path of node.js executable.
  • New Feature Added settings.nodejs_modules_path that defines the absolute path of node_modules folder.
  • New Feature Added settings.nodejs_debugger_protocol that defines node.js debug protocol. This must be set to inspector.
  • New Feature Added settings.nodejs_command_line_arguments that provides default node.js command line arguments.
  • New Feature Added settings.nodejs_javascript_program that defines the absolute path of JavaScript program to execute in node.js child process.
  • New Feature Added settings.nodejs_auto_start that enables starting node.js when WebKitX starts.
  • New Feature Added settings.nodejs_debug_port that defines node.js debug port which essentially enables node.js debugging features of WebKitX.
  • New Feature Added settings.nodejs_terminate_on_debug_end that enables synch between WebKitX instantiation and node.js life cycle.
  • New Feature Added CallByNameAsync that calls a JavaScript function asynchronously of the global scope, no result is returned.
  • New Feature Added DispatchEventAsync that dispatches an Event asynchronously at the specified EventTarget, invoking the affected EventListeners.
  • New Feature Added DebuggerAddBreakpoint method for self-tapping to V8 debugger or to an external node.js debugger and adding breakpoints.
  • New Feature Added DebuggerRemoveBreakpoint method for removing breakpoints from V8 debugger or an external node.js debugger.
  • New Feature Added DebuggerPause method for self-pausing V8 debugger or an external node.js debugger.
  • New Feature Added DebuggerContinue method for self-resuming V8 debugger or an external node.js debugger.
  • New Feature Added DebuggerStepIn method for stepping in V8 debugger or an external node.js debugger.
  • New Feature Added DebuggerStepOver method for stepping over V8 debugger or an external node.js debugger.
  • New Feature Added DebuggerStepOut method for stepping out V8 debugger or an external node.js debugger.
  • New Feature Added DebuggerEvaluate method for evaluating expressions in V8 debugger or an external node.js debugger.
  • New Feature Added OnError event fired when a Win32 error occurs. The event is intended for integration debugging.
  • New Feature Added OnWebSocketOpen V8 debugger event fired after debugger WebSocket is successfully connected.
  • New Feature Added OnWebSocketClose V8 debugger event fired after debugger WebSocket is successfully disconnected.
  • New Feature Added OnWebSocketError V8 debugger event fired when debugger WebSocket generates a Win32 error.
  • New Feature Added OnDebuggerStarted V8 or external node.js debugger event.
  • New Feature Added OnDebuggerTerminated V8 or external node.js debugger debugger event.
  • New Feature Added OnDebuggerScriptParsed V8  or external node.js debuggerdebugger event.
  • New Feature Added OnDebuggerPaused V8 or external node.js debugger debugger event.
  • New Feature Added OnDebuggerResumed V8 or external node.js debugger debugger event.
  • New Feature Added OnDebuggerBreakpointHit V8 or external node.js debugger debugger event.
  • New Guide Hot Introducing JavaScript Externs documentation with native methods added in JavaScript context by WebKitX.
  • New Feature Added window.ShowSaveFileDialog method that shows default Windows File Save dialog directly from JavaScript.
  • New Feature Added window.ShowOpenFileDialog method that shows default Windows File Open dialog directly from JavaScript.
  • New Feature Added window.ShowSelectFolderDialog method that shows default Windows Select Folder dialog directly from JavaScript.
  • New Feature Added window.ReadTextFile method for reading Unicode or UTF-8 text files directly from JavaScript.
  • New Feature Added window.WriteTextFile method for saving Unicode or UTF-8 text files with BOM directly from JavaScript.
  • New Feature Added window.ClipboardSetText method for copying text to clipboard. Installs as navigator.clipboard.writeText too.
  • New Feature Added window.ClipboardGetText method for obtaining text from clipboard. Installs as navigator.clipboard.readText too.
  • New Feature Added window.OpenPrinter that retrieves a handle to the specified printer or print server in the print subsystem.
  • New Feature Added window.StartDocPrinter that notifies the print spooler that a document is to be spooled for printing.
  • New Feature Added window.StartPagePrinter that notifies the spooler that a page is about to be printed on the specified printer.
  • New Feature Added window.WritePrinter that notifies the print spooler that data should be written to the specified printer.
  • New Feature Added window.EndPagePrinter that notifies the print spooler that the application is at the end of a page in a print job.
  • New Feature Added window.EndDocPrinter that ends a print job for the specified printer.
  • New Feature Added window.ClosePrinter that releases a printer handle opened by OpenPrinter.

Nov 2020

  • Hot Fix Fixed IDispatch reverse arguments bug when calling functions with more than 1 arguments in AddObject() objects.
  • Hot Fix Improved drag-and-drop support for dragging HTML fragments on one WebKitX control and dropping them to another.
  • Hot Fix Added Microsoft XML v.6 in setup package required by some samples.
  • Hot Fix Fixed Windows XP licensing bug looking for wrong license file.
  • New Feature Added ReadLocalStorage method for reading dictionary values from local storage.
  • New Feature Added WriteLocalStorage method for saving dictionary values to local storage.
  • New Guide Hot Added topic with Loading Performance Tips providing a checklist for treating slow loading of pages.
  • New Guide Added Visual Studio Code integration guide for debugging WebKitX HTML5 / JavaScript applications.
  • New Sample New sample demonstrating use of Local Storage.
  • New Sample New sample demonstrating use of Multiple Native Windows.

Jun 2020

  • Hot Fix Fixed bug in AddObject causing invokation errors.

Mar 2020

  • Hot Fix Improved stability.
  • Hot Fix Fixed Run() method bug causing crashes when used with more than 1 parameters.
  • Hot Fix Fixed ScriptControl.Error object to support JavaScript errors with source line and column.
  • Hot Fix Fixed Google V8 to VARIANT minor bugs and added support for Infinity.
  • Hot Fix Improved COM Reference Counting and speed.
  • Hot Fix Improved exception handling from JavaScript to COM.
  • New Feature Added vanilla implementation for Modules and Procedures.
  • New Sample Released documentation at https://www.webkitx.com/doc/jx/About.html.

More Release Notes ...

 

Documentation

 

Getting Started

Installation Guide
Step-by-step installation guide to properly install WebKitX on your Developer Workstation.

Read More

Loading Sequence
Discover WebKitX initialization sequence and load your first URL.

Read More

Plugins
Discover WebKitX Plugins and use them in your apps: PDF Viewer, Flash Player and Chrome Developer Tools.

Read More

High DPI Support
Enable high dpi support for both your executable and CEF3.

Read More

Loading Performance Tips
Performance tips for faster loading of HTML pages in your application.

Read More

Remote Debugging with VS Code
Instructions for debugging JavaScript in WebKitX from Visual Studio Code.

Read More

License Activation
Instructions to activate your Commercial License and register your Workstation.

Read More

Distribution
Instructions to distribute WebKitX binaries with your applications.

Read More
 

Integration Guides

Visual Basic 6.0 Guide
Guide for loading and using WebKitX in Visual Basic 6.0 programs.

Read More

C# Guide
Guide for developing 32-bit and 64-bit WebKitX applications with C#.

Read More

Visual C++ Guide
Step-by-step guide for using WebKitX in C++ MFC applications.

Read More

RAD Studio Rio Guide
Step-by-step guide for using WebKitX in RAD Studio Rio VCL projects.

Read More

dBase Guide
Step-by-step guide for using WebKitX with dBase.

Read More

Power Builder Guide
Step-by-step guide for using WebKitX with PowerBuilder 2019.

Read More

ForPro 9 Guide
Guide for adding WebKitX in FoxPro forms and navigating to a URL.

Read More

Legacy ForPro Guide
Guide for adding WebKitX in Legacy FoxPro forms and navigating to a URL.

Read More

FactoryTalk Guide
Step-by-step guide for using WebKitX with Rockwell FactoryTalk Automation software.

Read More

Microsoft Office VBA Guide
Step-by-step guide for using WebKitX with Office 64-bit VBA applications.

Read More

Microsoft Excel Guide
Step-by-step guide for using WebKitX in Excel and transfer values and events.

Read More

WinBatch Guide
Step-by-step guide for using WebKitX with WinBatch scripts.

Read More
 

Best Practices

Accessing HTML5 DOM
Reading and writing HTML5 markup, element attributes and CSS3 styles.

Read More

Calling JavaScript
Call JavaScript functions with arguments from your native program.

Read More

Handling DOM Events
Handle DOM events in your program using COM event handling.

Read More

Expose COM objects to JavaScript
Expose and invoke your OLE/COM objects in JavaScript.

Read More

HTML5 Editing
Edit HTML5 code in a WYSIWYG manner with WebKitX.

Read More

CORS & CSP Filtering
Bypass CORS and CSP policies with advanced WebKitX content filtering.

Read More
 

Multimedia

Available in version 4.x only.

H.264 / ACC codec
Proprietary codecs for modern audiovisual applications.

Read More

Widevine
Widevine-enabled secure premium content protection support.

Read More

HTTP Live Stream
HTTP Live Stream made easy with hls.js library wrapping for COM use.

Read More
 

Highlights

Visual Studio Code Integration

Debug JavaScript running in WebKitX controls in your Windows Forms applications through Visual Studio Code integration. In-app JavaScript debugging was never easier and more efficient as you can debug it directly from your own application's executable in real conditions. Visual Studio Code is a free source-code editor made by Microsoft for Windows, Linux and macOS. Features include support for debugging, syntax highlighting, intelligent code completion, snippets, code refactoring, and embedded Git.

Read More

Chrome DevTools Support

Alternatively, WebKitX has built-in support for Chrome DevTools and wraps DevTools Protocol which allows for developers to instrument, inspect, debug and profile HTML5 and JavaScript. In Chrome DevTools Protocol instrumentation is divided into a number of domains (DOM, Debugger, Network etc.) and each domain defines a number of commands and events. You can execute DevTools commands with ExecDevToolsCommand and handle the generated events in OnDevToolsWebSocket event.  Both commands and events are serialized JSON objects of a fixed structure.

Read More

Accessing HTML5 DOM Programmatically

In an attempt to provide HTML5 DOM access and manipulation programmatically in similar way like Microsoft Web Browser Control, WebKitX offers limited access and DOM manipulation through COM Wrappers. A COM Wrapper wraps native WebKit Blink HTML5 Elements and exposes them to the OLE/COM environment. WebKitX HTML5 COM Wrappers are volatile Just-In-Time (JIT) COM objects, meaning that WebKitX does not reference-count the provided COM object. Internally each COM Wrapper has a CSS3 Selector to the underlying native object and the wrapper is valid for as long as the CSS3 Selector remains valid.

Read More

Calling JavaScript and JavaScript Callbacks

The simplest way to call a JavaScript function in WebKitX is WebKitX.CallByName(Name, Variant) method. You can pass to JavaScript function arbitrary arguments using an OLE/COM Variant, and receive the function's result value, as an OLE/COM Variant too. Execution of CallByName is IPC-synchronous and this method is an elegant alternative to WebKitX.Eval() as you can pass back-and-forth your variables without stringifying them.

Each frame in a browser window has its own V8 context. The context defines the scope for all variables, objects and functions defined in that frame. WebKitX allows you to register a JavaScript callback in a V8 context using window.register(name, callback, this) method. The first argument is the string name of the function, the second is the function callback and the 3rd optional parameter is the execution context. If the 3rd parameter is not defined then the global object is assumed.

Read More

Adding native Objects to JavaScript

This technology allows you to use headless COM objects (non-controls) from JavaScript. Any simple in-process or out-of-process apartment threaded COM object with scalar properties and/or methods with scalar arguments and scalar return value can be wrapped into an V8 object and exposed through a global identifier (and window dot identifier) to the V8 JavaScript context of the main frame.

Read More

Handling DOM Events

HTML5 DOM Events are generated by WebKit Blink Engine and are copied into an immutable format before they are transmitted from CEFXClient process to WebKitX ActiveX. Once WebKitX ActiveX receives an event notification through IPC, it fires a COM Event with the copied data of HTML DOM event. Thus, CEFXClient process does not block waiting for your client code to handle the event. WebKitX DOM Events are Immutable, meaning that you can only read event data but you cannot cancel events, stop them from bubbling or prevent default behavior.

WebKitX as of version 1.5.11.2591 supports synchronous DOM to COM events by implementing CefMessageRouter circuit. Events generated from WebKit Blink Engine are serialized and passed from Rendering to Browser process, which transmits them to the ActiveX. The browser process waits for the ActiveX to handle the event, where you can also cancel event bubble or prevent event's default behavior.

Read More

Firing custom DOM Events

WebKitX DispatchEvent() method allows you to fire DOM events directly into JavaScript and handle those events by JavaScript event handlers. You can pass the target selector that will receive the event, the event name, event initialization parameters (bubbling, cancelable, composed) and an OLE/COM Variant that will be converted into a V8 JavaScript object and added in the details field of the Event object. Event execution can be both synchronous and asynchronous in terms of IPC tunneling, and it is always synchronous in terms of DOM.

Read More
 

Licensing

Please read carefully our licensing documents for Standard Licensing, Professional Licensing and Enterprise Licensing and do not hesitate to contact us if you have questions or if you need to negotiate special closures:

Perpetual Commercial License for Desktop Application Development

With Perpetual Commercial Licensing you can develop an unlimited number of Windows Desktop Applications linked with mobileFX ActiveX and distribute them freely to an unlimited number of your customers. We offer free upgrades for the software's minor versions, subscribe to receive update notifications.

  • You are welcome to evaluate mobileFX ActiveX for 30 days without obtaining licenses.
  • To link mobileFX ActiveX with your software you are required to obtain one (1) Commercial License per Developer Workstation and Build Server.
  • For applications that run over Remote, Virtual or Embedded terminals you are required to obtain Terminal Licensing over Commercial Licensing.
  • For HMI applications or applications bundled and sold with Hardware Devices you are required to obtain Device Licensing over Commercial Licensing.
  • By obtaining 1x Perpetual Commercial License your will get 1x Terminal License for development purposes for your Developer Workstation.
Product Compatibility Price Buy Now
WebKitX ActiveX v4.x 32-bit Windows 7, 8, 10 £ 599
WebKitX ActiveX v4.x 64-bit Windows 7, 8, 10 £ 999
WebKitX ActiveX v2.x 32-bit Windows XP Windows XP, Vista £ 999
JavaScriptX ActiveX v1.x 32-bit Windows 7, 8, 10 £ 99

Subscription-based Commercial License for Terminal Software Development

Terminal Licensing over Commercial Licensing is required if-and-only-if an application linked with mobileFX Software is deployed on Windows Embedded operating systems, or deployed through Terminal Services, or Virtual Appliances. Terminal services include any remote session such as Remote Desktop, Citrix Clients and Terminal Server Clients, and any Virtualization container such as VMware, Virtual Box, VSphere, Docker, Parallels, etc.

For more information please read mobileFX Software Licensing Guide for 2020 (PDF)

Perpetual Device License for Hardware Development

Device Licensing over Commercial Licensing applies to Independent Hardware Vendors (IHV) and it is required if-and-only-if a software linked with mobileFX ActiveX products is distributed as part of, or embedded in, a Hardware Product, such as but not limited to IoT Devices and Gateways, POS Devices, Self Service Terminals, Vending Machines, Digital Signage Kiosks, Automation Devices, ATM Devices, HMI, etc.

For more information please read mobileFX Software Licensing Guide for 2020 (PDF)

Licensing with Purchase Order (PO)

If PayPal is not allowed by your company or if you wish to order Professional Licensing or Enterprise Licensing you need to send us a Purchase Order.

  1. Please download our Purchase Order Template.
  2. Fill-in your Company details including Company Name, Street Address, Telephone and VAT number (EU format).
  3. Fill-in the Quotation Number (if any).
  4. Fill-in your name and email address in ORDERED BY box.
  5. Fill-in the QUANTITY of the product OR plan OR service your are ordering.
  6. Multiply the QUANTITY with the UNIT PRICE of the product OR plan OR service your are ordering; fill-in AMOUNT and SUB-TOTAL boxes.
  7. If ordering from UK, please apply VAT. Fill-in TOTAL DUE.
  8. Ordering Professional or Enterprise Licensing requires signed contract. Upon PO processing we will send you one.
  9. Invoices are in GBP and payments by Wire Transfer only. For exchange rates please visit HMRC web site.
  10. Licenses are generated upon payment.
  11. You must accept our Licensing Agreement without reservations.
  12. Reselling our products is strictly prohibited. You are discouraged from involving resellers and mediators.

No Reselling

No reselling programs are available. Reselling our products is strictly prohibited.

 

Evaluator Support

Evaluators please review the DocumentationSamples and Licensing for details about our products and their usage. Most common questions about our products are answered in Getting Started and Advanced Topics sections. Also, please review Trouble Shooting for common problems.

If you have any questions you are encouraged to mail us at info@mobilefx.com. To successfully pass our SPAM FILTER you are kindly requested to include in your email subject the word WebKitX, write your message in English Language and include your Company Details and your own Name and Surname. Please note that emails sent from Gmail, Hotmail, Yahoo and other similar providers might be considered anonymous if missing the above information. Anonymous emails are not being processed.

Please read our Privacy Policy.

 

Customer Support

If you desperately need a new feature implemented in our ActiveX controls or immediately need a hotfix and can't wait until next release, you can contact us at info@mobilefx.com and negotiate with us a price, for which we will stop what we do and take care of what you need! The service is called a Bounty and applies only to existing Customers; for any edition of the ActiveX but only for its latest version (we do not branch per customer).

Just send us an email with what you need and our Account Manager will pass your request to our Tech Lead for Effort Estimation along with Technical Specs of the works to be done. Effort Estimation is in man hours and it is different from Duration. For example, to add a feature it might take our experts 8 hours to implement, but because we work on Sprints we might need a duration of one week to deliver.

The catch is that you participate in the process, being the primary Beta Tester! This phase is called User Acceptance Testing (UAT) and during this period you receive code-locked prototype revisions and provide us with valuable feedback, such as UAT observations and Defects. Once UAT is completed and you are satisfied with the result, you release us from the Bounty and we provide you with an Unlock Code as a token of our appreciation.

Service Duration or Effort Price
Support Voucher / Bounty 2 hours (minimum) £ 100