Repository files navigation

MSIE JavaScript Engine for .NET

MSIE JS Engine Logo

This project is a .NET wrapper for working with the Internet Explorer's JavaScript engines (JsRT version of Chakra, ActiveScript version of Chakra and Classic JavaScript Engine). Project was based on the code of SassAndCoffee.JavaScript and Chakra Sample Hosts.

MSIE JavaScript Engine requires a installation of Internet Explorer on the machine and can work in 4 modes, that are defined in the MsieJavaScriptEngine.JsEngineMode enumeration:

  • Auto. Automatically selects the most modern JavaScript engine from available on the machine.
  • Classic. Classic MSIE JavaScript engine (supports ECMAScript 3 with possibility of using the ECMAScript 5 Polyfill and the JSON2 library). Requires Internet Explorer 6 or higher on the machine.
  • ChakraActiveScript. ActiveScript version of Chakra JavaScript engine (supports ECMAScript 3 with possibility of using the ECMAScript 5 Polyfill and the JSON2 library). Requires Internet Explorer 9 or higher on the machine.
  • ChakraJsRt. JsRT version of Chakra JavaScript engine (supports ECMAScript 5). Requires Internet Explorer 11 or higher on the machine. Detailed information about JsRT you can read in the Paul Vick's blog.

The supported .NET types are as follows:

  • MsieJavaScriptEngine.Undefined
  • System.Boolean
  • System.Int32
  • System.Double
  • System.String

Installation

This library can be installed through NuGet - http://nuget.org/packages/MsieJavaScriptEngine.

Usage

Consider a simple example of usage of the MSIE JavaScript Engine:

namespace MsieJavaScriptEngine.Example.Console
{
using System;
using MsieJavaScriptEngine;
using MsieJavaScriptEngine.Helpers;
class Program
{
static void Main(string[] args)
{
try
{
using (var jsEngine = new MsieJsEngine(engineMode: JsEngineMode.Auto, useEcmaScript5Polyfill: false, useJson2Library: false))
{
const string expression = "7 * 8 - 20";
var result = jsEngine.Evaluate<int>(expression);
Console.WriteLine("{0} = {1}", expression, result);
}
}
catch (JsEngineLoadException e)
{
Console.WriteLine("During loading of JavaScript engine an error occurred.");
Console.WriteLine();
Console.WriteLine(JsErrorHelpers.Format(e));
}
catch (JsRuntimeException e)
{
Console.WriteLine("During execution of JavaScript code an error occurred.");
Console.WriteLine();
Console.WriteLine(JsErrorHelpers.Format(e));
}
Console.ReadLine();
}
}
}

First we create an instance of the MsieJsEngine class and pass the following parameters to the constructor:

  1. engineMode - JavaScript engine mode;
  2. useEcmaScript5Polyfill - flag for whether to use the ECMAScript 5 Polyfill;
  3. useJson2Library - flag for whether to use the JSON2 library.

The values of constructor parameters in the above code correspond to the default values.

Then we evaluate a JavaScript expression by using of the Evaluate method and output its result to the console.

In addition, we provide handling of the following exception types: JsEngineLoadException and JsRuntimeException.

Release History

See the changelog.

License

Microsoft Public License (Ms-PL)

Credits

Who's Using MSIE JavaScript Engine

If you use the MSIE JavaScript Engine in some project, please send me a message so I can include it in this list:

About

MSIE JavaScript Engine - .NET wrapper for working with the Internet Explorer's JavaScript engines (JsRT version of Chakra, ActiveScript version of Chakra and Classic JavaScript Engine). Project was based on the code of SassAndCoffee.JavaScript and Chakra Sample Hosts.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

MSIE JavaScript Engine for .NET

MSIE JS Engine Logo

This project is a .NET wrapper for working with the Internet Explorer's JavaScript engines (JsRT version of Chakra, ActiveScript version of Chakra and Classic JavaScript Engine). Project was based on the code of SassAndCoffee.JavaScript and Chakra Sample Hosts.

MSIE JavaScript Engine requires a installation of Internet Explorer on the machine and can work in 4 modes, that are defined in the MsieJavaScriptEngine.JsEngineMode enumeration:

  • Auto. Automatically selects the most modern JavaScript engine from available on the machine.
  • Classic. Classic MSIE JavaScript engine (supports ECMAScript 3 with possibility of using the ECMAScript 5 Polyfill and the JSON2 library). Requires Internet Explorer 6 or higher on the machine.
  • ChakraActiveScript. ActiveScript version of Chakra JavaScript engine (supports ECMAScript 3 with possibility of using the ECMAScript 5 Polyfill and the JSON2 library). Requires Internet Explorer 9 or higher on the machine.
  • ChakraJsRt. JsRT version of Chakra JavaScript engine (supports ECMAScript 5). Requires Internet Explorer 11 or higher on the machine. Detailed information about JsRT you can read in the Paul Vick's blog.

The supported .NET types are as follows:

  • MsieJavaScriptEngine.Undefined
  • System.Boolean
  • System.Int32
  • System.Double
  • System.String

Installation

This library can be installed through NuGet - http://nuget.org/packages/MsieJavaScriptEngine.

Usage

Consider a simple example of usage of the MSIE JavaScript Engine:

namespace MsieJavaScriptEngine.Example.Console
{
using System;
using MsieJavaScriptEngine;
using MsieJavaScriptEngine.Helpers;
class Program
{
static void Main(string[] args)
{
try
{
using (var jsEngine = new MsieJsEngine(engineMode: JsEngineMode.Auto, useEcmaScript5Polyfill: false, useJson2Library: false))
{
const string expression = "7 * 8 - 20";
var result = jsEngine.Evaluate<int>(expression);
Console.WriteLine("{0} = {1}", expression, result);
}
}
catch (JsEngineLoadException e)
{
Console.WriteLine("During loading of JavaScript engine an error occurred.");
Console.WriteLine();
Console.WriteLine(JsErrorHelpers.Format(e));
}
catch (JsRuntimeException e)
{
Console.WriteLine("During execution of JavaScript code an error occurred.");
Console.WriteLine();
Console.WriteLine(JsErrorHelpers.Format(e));
}
Console.ReadLine();
}
}
}

First we create an instance of the MsieJsEngine class and pass the following parameters to the constructor:

  1. engineMode - JavaScript engine mode;
  2. useEcmaScript5Polyfill - flag for whether to use the ECMAScript 5 Polyfill;
  3. useJson2Library - flag for whether to use the JSON2 library.

The values of constructor parameters in the above code correspond to the default values.

Then we evaluate a JavaScript expression by using of the Evaluate method and output its result to the console.

In addition, we provide handling of the following exception types: JsEngineLoadException and JsRuntimeException.

Release History

See the changelog.

License

Microsoft Public License (Ms-PL)

Credits

Who's Using MSIE JavaScript Engine

If you use the MSIE JavaScript Engine in some project, please send me a message so I can include it in this list:

About

MSIE JavaScript Engine - .NET wrapper for working with the Internet Explorer's JavaScript engines (JsRT version of Chakra, ActiveScript version of Chakra and Classic JavaScript Engine). Project was based on the code of SassAndCoffee.JavaScript and Chakra Sample Hosts.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

MSIE JavaScript Engine for .NET

MSIE JS Engine Logo

This project is a .NET wrapper for working with the Internet Explorer's JavaScript engines (JsRT version of Chakra, ActiveScript version of Chakra and Classic JavaScript Engine). Project was based on the code of SassAndCoffee.JavaScript and Chakra Sample Hosts.

MSIE JavaScript Engine requires a installation of Internet Explorer on the machine and can work in 4 modes, that are defined in the MsieJavaScriptEngine.JsEngineMode enumeration:

  • Auto. Automatically selects the most modern JavaScript engine from available on the machine.
  • Classic. Classic MSIE JavaScript engine (supports ECMAScript 3 with possibility of using the ECMAScript 5 Polyfill and the JSON2 library). Requires Internet Explorer 6 or higher on the machine.
  • ChakraActiveScript. ActiveScript version of Chakra JavaScript engine (supports ECMAScript 3 with possibility of using the ECMAScript 5 Polyfill and the JSON2 library). Requires Internet Explorer 9 or higher on the machine.
  • ChakraJsRt. JsRT version of Chakra JavaScript engine (supports ECMAScript 5). Requires Internet Explorer 11 or higher on the machine. Detailed information about JsRT you can read in the Paul Vick's blog.

The supported .NET types are as follows:

  • MsieJavaScriptEngine.Undefined
  • System.Boolean
  • System.Int32
  • System.Double
  • System.String

Installation

This library can be installed through NuGet - http://nuget.org/packages/MsieJavaScriptEngine.

Usage

Consider a simple example of usage of the MSIE JavaScript Engine:

namespace MsieJavaScriptEngine.Example.Console
{
using System;
using MsieJavaScriptEngine;
using MsieJavaScriptEngine.Helpers;
class Program
{
static void Main(string[] args)
{
try
{
using (var jsEngine = new MsieJsEngine(engineMode: JsEngineMode.Auto, useEcmaScript5Polyfill: false, useJson2Library: false))
{
const string expression = "7 * 8 - 20";
var result = jsEngine.Evaluate<int>(expression);
Console.WriteLine("{0} = {1}", expression, result);
}
}
catch (JsEngineLoadException e)
{
Console.WriteLine("During loading of JavaScript engine an error occurred.");
Console.WriteLine();
Console.WriteLine(JsErrorHelpers.Format(e));
}
catch (JsRuntimeException e)
{
Console.WriteLine("During execution of JavaScript code an error occurred.");
Console.WriteLine();
Console.WriteLine(JsErrorHelpers.Format(e));
}
Console.ReadLine();
}
}
}

First we create an instance of the MsieJsEngine class and pass the following parameters to the constructor:

  1. engineMode - JavaScript engine mode;
  2. useEcmaScript5Polyfill - flag for whether to use the ECMAScript 5 Polyfill;
  3. useJson2Library - flag for whether to use the JSON2 library.

The values of constructor parameters in the above code correspond to the default values.

Then we evaluate a JavaScript expression by using of the Evaluate method and output its result to the console.

In addition, we provide handling of the following exception types: JsEngineLoadException and JsRuntimeException.

Release History

See the changelog.

License

Microsoft Public License (Ms-PL)

Credits

Who's Using MSIE JavaScript Engine

If you use the MSIE JavaScript Engine in some project, please send me a message so I can include it in this list:

About

MSIE JavaScript Engine - .NET wrapper for working with the Internet Explorer's JavaScript engines (JsRT version of Chakra, ActiveScript version of Chakra and Classic JavaScript Engine). Project was based on the code of SassAndCoffee.JavaScript and Chakra Sample Hosts.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

MSIE JavaScript Engine for .NET

MSIE JS Engine Logo

This project is a .NET wrapper for working with the Internet Explorer's JavaScript engines (JsRT version of Chakra, ActiveScript version of Chakra and Classic JavaScript Engine). Project was based on the code of SassAndCoffee.JavaScript and Chakra Sample Hosts.

MSIE JavaScript Engine requires a installation of Internet Explorer on the machine and can work in 4 modes, that are defined in the MsieJavaScriptEngine.JsEngineMode enumeration:

  • Auto. Automatically selects the most modern JavaScript engine from available on the machine.
  • Classic. Classic MSIE JavaScript engine (supports ECMAScript 3 with possibility of using the ECMAScript 5 Polyfill and the JSON2 library). Requires Internet Explorer 6 or higher on the machine.
  • ChakraActiveScript. ActiveScript version of Chakra JavaScript engine (supports ECMAScript 3 with possibility of using the ECMAScript 5 Polyfill and the JSON2 library). Requires Internet Explorer 9 or higher on the machine.
  • ChakraJsRt. JsRT version of Chakra JavaScript engine (supports ECMAScript 5). Requires Internet Explorer 11 or higher on the machine. Detailed information about JsRT you can read in the Paul Vick's blog.

The supported .NET types are as follows:

  • MsieJavaScriptEngine.Undefined
  • System.Boolean
  • System.Int32
  • System.Double
  • System.String

Installation

This library can be installed through NuGet - http://nuget.org/packages/MsieJavaScriptEngine.

Usage

Consider a simple example of usage of the MSIE JavaScript Engine:

namespace MsieJavaScriptEngine.Example.Console
{
using System;
using MsieJavaScriptEngine;
using MsieJavaScriptEngine.Helpers;
class Program
{
static void Main(string[] args)
{
try
{
using (var jsEngine = new MsieJsEngine(engineMode: JsEngineMode.Auto, useEcmaScript5Polyfill: false, useJson2Library: false))
{
const string expression = "7 * 8 - 20";
var result = jsEngine.Evaluate<int>(expression);
Console.WriteLine("{0} = {1}", expression, result);
}
}
catch (JsEngineLoadException e)
{
Console.WriteLine("During loading of JavaScript engine an error occurred.");
Console.WriteLine();
Console.WriteLine(JsErrorHelpers.Format(e));
}
catch (JsRuntimeException e)
{
Console.WriteLine("During execution of JavaScript code an error occurred.");
Console.WriteLine();
Console.WriteLine(JsErrorHelpers.Format(e));
}
Console.ReadLine();
}
}
}

First we create an instance of the MsieJsEngine class and pass the following parameters to the constructor:

  1. engineMode - JavaScript engine mode;
  2. useEcmaScript5Polyfill - flag for whether to use the ECMAScript 5 Polyfill;
  3. useJson2Library - flag for whether to use the JSON2 library.

The values of constructor parameters in the above code correspond to the default values.

Then we evaluate a JavaScript expression by using of the Evaluate method and output its result to the console.

In addition, we provide handling of the following exception types: JsEngineLoadException and JsRuntimeException.

Release History

See the changelog.

License

Microsoft Public License (Ms-PL)

Credits

Who's Using MSIE JavaScript Engine

If you use the MSIE JavaScript Engine in some project, please send me a message so I can include it in this list:

About

MSIE JavaScript Engine - .NET wrapper for working with the Internet Explorer's JavaScript engines (JsRT version of Chakra, ActiveScript version of Chakra and Classic JavaScript Engine). Project was based on the code of SassAndCoffee.JavaScript and Chakra Sample Hosts.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

MSIE JavaScript Engine for .NET

MSIE JS Engine Logo

This project is a .NET wrapper for working with the Internet Explorer's JavaScript engines (JsRT version of Chakra, ActiveScript version of Chakra and Classic JavaScript Engine). Project was based on the code of SassAndCoffee.JavaScript and Chakra Sample Hosts.

MSIE JavaScript Engine requires a installation of Internet Explorer on the machine and can work in 4 modes, that are defined in the MsieJavaScriptEngine.JsEngineMode enumeration:

  • Auto. Automatically selects the most modern JavaScript engine from available on the machine.
  • Classic. Classic MSIE JavaScript engine (supports ECMAScript 3 with possibility of using the ECMAScript 5 Polyfill and the JSON2 library). Requires Internet Explorer 6 or higher on the machine.
  • ChakraActiveScript. ActiveScript version of Chakra JavaScript engine (supports ECMAScript 3 with possibility of using the ECMAScript 5 Polyfill and the JSON2 library). Requires Internet Explorer 9 or higher on the machine.
  • ChakraJsRt. JsRT version of Chakra JavaScript engine (supports ECMAScript 5). Requires Internet Explorer 11 or higher on the machine. Detailed information about JsRT you can read in the Paul Vick's blog.

The supported .NET types are as follows:

  • MsieJavaScriptEngine.Undefined
  • System.Boolean
  • System.Int32
  • System.Double
  • System.String

Installation

This library can be installed through NuGet - http://nuget.org/packages/MsieJavaScriptEngine.

Usage

Consider a simple example of usage of the MSIE JavaScript Engine:

namespace MsieJavaScriptEngine.Example.Console
{
using System;
using MsieJavaScriptEngine;
using MsieJavaScriptEngine.Helpers;
class Program
{
static void Main(string[] args)
{
try
{
using (var jsEngine = new MsieJsEngine(engineMode: JsEngineMode.Auto, useEcmaScript5Polyfill: false, useJson2Library: false))
{
const string expression = "7 * 8 - 20";
var result = jsEngine.Evaluate<int>(expression);
Console.WriteLine("{0} = {1}", expression, result);
}
}
catch (JsEngineLoadException e)
{
Console.WriteLine("During loading of JavaScript engine an error occurred.");
Console.WriteLine();
Console.WriteLine(JsErrorHelpers.Format(e));
}
catch (JsRuntimeException e)
{
Console.WriteLine("During execution of JavaScript code an error occurred.");
Console.WriteLine();
Console.WriteLine(JsErrorHelpers.Format(e));
}
Console.ReadLine();
}
}
}

First we create an instance of the MsieJsEngine class and pass the following parameters to the constructor:

  1. engineMode - JavaScript engine mode;
  2. useEcmaScript5Polyfill - flag for whether to use the ECMAScript 5 Polyfill;
  3. useJson2Library - flag for whether to use the JSON2 library.

The values of constructor parameters in the above code correspond to the default values.

Then we evaluate a JavaScript expression by using of the Evaluate method and output its result to the console.

In addition, we provide handling of the following exception types: JsEngineLoadException and JsRuntimeException.

Release History

See the changelog.

License

Microsoft Public License (Ms-PL)

Credits

Who's Using MSIE JavaScript Engine

If you use the MSIE JavaScript Engine in some project, please send me a message so I can include it in this list:

About

MSIE JavaScript Engine - .NET wrapper for working with the Internet Explorer's JavaScript engines (JsRT version of Chakra, ActiveScript version of Chakra and Classic JavaScript Engine). Project was based on the code of SassAndCoffee.JavaScript and Chakra Sample Hosts.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

MSIE JavaScript Engine for .NET

MSIE JS Engine Logo

This project is a .NET wrapper for working with the Internet Explorer's JavaScript engines (JsRT version of Chakra, ActiveScript version of Chakra and Classic JavaScript Engine). Project was based on the code of SassAndCoffee.JavaScript and Chakra Sample Hosts.

MSIE JavaScript Engine requires a installation of Internet Explorer on the machine and can work in 4 modes, that are defined in the MsieJavaScriptEngine.JsEngineMode enumeration:

  • Auto. Automatically selects the most modern JavaScript engine from available on the machine.
  • Classic. Classic MSIE JavaScript engine (supports ECMAScript 3 with possibility of using the ECMAScript 5 Polyfill and the JSON2 library). Requires Internet Explorer 6 or higher on the machine.
  • ChakraActiveScript. ActiveScript version of Chakra JavaScript engine (supports ECMAScript 3 with possibility of using the ECMAScript 5 Polyfill and the JSON2 library). Requires Internet Explorer 9 or higher on the machine.
  • ChakraJsRt. JsRT version of Chakra JavaScript engine (supports ECMAScript 5). Requires Internet Explorer 11 or higher on the machine. Detailed information about JsRT you can read in the Paul Vick's blog.

The supported .NET types are as follows:

  • MsieJavaScriptEngine.Undefined
  • System.Boolean
  • System.Int32
  • System.Double
  • System.String

Installation

This library can be installed through NuGet - http://nuget.org/packages/MsieJavaScriptEngine.

Usage

Consider a simple example of usage of the MSIE JavaScript Engine:

namespace MsieJavaScriptEngine.Example.Console
{
using System;
using MsieJavaScriptEngine;
using MsieJavaScriptEngine.Helpers;
class Program
{
static void Main(string[] args)
{
try
{
using (var jsEngine = new MsieJsEngine(engineMode: JsEngineMode.Auto, useEcmaScript5Polyfill: false, useJson2Library: false))
{
const string expression = "7 * 8 - 20";
var result = jsEngine.Evaluate<int>(expression);
Console.WriteLine("{0} = {1}", expression, result);
}
}
catch (JsEngineLoadException e)
{
Console.WriteLine("During loading of JavaScript engine an error occurred.");
Console.WriteLine();
Console.WriteLine(JsErrorHelpers.Format(e));
}
catch (JsRuntimeException e)
{
Console.WriteLine("During execution of JavaScript code an error occurred.");
Console.WriteLine();
Console.WriteLine(JsErrorHelpers.Format(e));
}
Console.ReadLine();
}
}
}

First we create an instance of the MsieJsEngine class and pass the following parameters to the constructor:

  1. engineMode - JavaScript engine mode;
  2. useEcmaScript5Polyfill - flag for whether to use the ECMAScript 5 Polyfill;
  3. useJson2Library - flag for whether to use the JSON2 library.

The values of constructor parameters in the above code correspond to the default values.

Then we evaluate a JavaScript expression by using of the Evaluate method and output its result to the console.

In addition, we provide handling of the following exception types: JsEngineLoadException and JsRuntimeException.

Release History

See the changelog.

License

Microsoft Public License (Ms-PL)

Credits

Who's Using MSIE JavaScript Engine

If you use the MSIE JavaScript Engine in some project, please send me a message so I can include it in this list:

About

MSIE JavaScript Engine - .NET wrapper for working with the Internet Explorer's JavaScript engines (JsRT version of Chakra, ActiveScript version of Chakra and Classic JavaScript Engine). Project was based on the code of SassAndCoffee.JavaScript and Chakra Sample Hosts.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

MSIE JavaScript Engine for .NET

MSIE JS Engine Logo

This project is a .NET wrapper for working with the Internet Explorer's JavaScript engines (JsRT version of Chakra, ActiveScript version of Chakra and Classic JavaScript Engine). Project was based on the code of SassAndCoffee.JavaScript and Chakra Sample Hosts.

MSIE JavaScript Engine requires a installation of Internet Explorer on the machine and can work in 4 modes, that are defined in the MsieJavaScriptEngine.JsEngineMode enumeration:

  • Auto. Automatically selects the most modern JavaScript engine from available on the machine.
  • Classic. Classic MSIE JavaScript engine (supports ECMAScript 3 with possibility of using the ECMAScript 5 Polyfill and the JSON2 library). Requires Internet Explorer 6 or higher on the machine.
  • ChakraActiveScript. ActiveScript version of Chakra JavaScript engine (supports ECMAScript 3 with possibility of using the ECMAScript 5 Polyfill and the JSON2 library). Requires Internet Explorer 9 or higher on the machine.
  • ChakraJsRt. JsRT version of Chakra JavaScript engine (supports ECMAScript 5). Requires Internet Explorer 11 or higher on the machine. Detailed information about JsRT you can read in the Paul Vick's blog.

The supported .NET types are as follows:

  • MsieJavaScriptEngine.Undefined
  • System.Boolean
  • System.Int32
  • System.Double
  • System.String

Installation

This library can be installed through NuGet - http://nuget.org/packages/MsieJavaScriptEngine.

Usage

Consider a simple example of usage of the MSIE JavaScript Engine:

namespace MsieJavaScriptEngine.Example.Console
{
using System;
using MsieJavaScriptEngine;
using MsieJavaScriptEngine.Helpers;
class Program
{
static void Main(string[] args)
{
try
{
using (var jsEngine = new MsieJsEngine(engineMode: JsEngineMode.Auto, useEcmaScript5Polyfill: false, useJson2Library: false))
{
const string expression = "7 * 8 - 20";
var result = jsEngine.Evaluate<int>(expression);
Console.WriteLine("{0} = {1}", expression, result);
}
}
catch (JsEngineLoadException e)
{
Console.WriteLine("During loading of JavaScript engine an error occurred.");
Console.WriteLine();
Console.WriteLine(JsErrorHelpers.Format(e));
}
catch (JsRuntimeException e)
{
Console.WriteLine("During execution of JavaScript code an error occurred.");
Console.WriteLine();
Console.WriteLine(JsErrorHelpers.Format(e));
}
Console.ReadLine();
}
}
}

First we create an instance of the MsieJsEngine class and pass the following parameters to the constructor:

  1. engineMode - JavaScript engine mode;
  2. useEcmaScript5Polyfill - flag for whether to use the ECMAScript 5 Polyfill;
  3. useJson2Library - flag for whether to use the JSON2 library.

The values of constructor parameters in the above code correspond to the default values.

Then we evaluate a JavaScript expression by using of the Evaluate method and output its result to the console.

In addition, we provide handling of the following exception types: JsEngineLoadException and JsRuntimeException.

Release History

See the changelog.

License

Microsoft Public License (Ms-PL)

Credits

Who's Using MSIE JavaScript Engine

If you use the MSIE JavaScript Engine in some project, please send me a message so I can include it in this list:

About

MSIE JavaScript Engine - .NET wrapper for working with the Internet Explorer's JavaScript engines (JsRT version of Chakra, ActiveScript version of Chakra and Classic JavaScript Engine). Project was based on the code of SassAndCoffee.JavaScript and Chakra Sample Hosts.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

MSIE JavaScript Engine for .NET

MSIE JS Engine Logo

This project is a .NET wrapper for working with the Internet Explorer's JavaScript engines (JsRT version of Chakra, ActiveScript version of Chakra and Classic JavaScript Engine). Project was based on the code of SassAndCoffee.JavaScript and Chakra Sample Hosts.

MSIE JavaScript Engine requires a installation of Internet Explorer on the machine and can work in 4 modes, that are defined in the MsieJavaScriptEngine.JsEngineMode enumeration:

  • Auto. Automatically selects the most modern JavaScript engine from available on the machine.
  • Classic. Classic MSIE JavaScript engine (supports ECMAScript 3 with possibility of using the ECMAScript 5 Polyfill and the JSON2 library). Requires Internet Explorer 6 or higher on the machine.
  • ChakraActiveScript. ActiveScript version of Chakra JavaScript engine (supports ECMAScript 3 with possibility of using the ECMAScript 5 Polyfill and the JSON2 library). Requires Internet Explorer 9 or higher on the machine.
  • ChakraJsRt. JsRT version of Chakra JavaScript engine (supports ECMAScript 5). Requires Internet Explorer 11 or higher on the machine. Detailed information about JsRT you can read in the Paul Vick's blog.

The supported .NET types are as follows:

  • MsieJavaScriptEngine.Undefined
  • System.Boolean
  • System.Int32
  • System.Double
  • System.String

Installation

This library can be installed through NuGet - http://nuget.org/packages/MsieJavaScriptEngine.

Usage

Consider a simple example of usage of the MSIE JavaScript Engine:

namespace MsieJavaScriptEngine.Example.Console
{
using System;
using MsieJavaScriptEngine;
using MsieJavaScriptEngine.Helpers;
class Program
{
static void Main(string[] args)
{
try
{
using (var jsEngine = new MsieJsEngine(engineMode: JsEngineMode.Auto, useEcmaScript5Polyfill: false, useJson2Library: false))
{
const string expression = "7 * 8 - 20";
var result = jsEngine.Evaluate<int>(expression);
Console.WriteLine("{0} = {1}", expression, result);
}
}
catch (JsEngineLoadException e)
{
Console.WriteLine("During loading of JavaScript engine an error occurred.");
Console.WriteLine();
Console.WriteLine(JsErrorHelpers.Format(e));
}
catch (JsRuntimeException e)
{
Console.WriteLine("During execution of JavaScript code an error occurred.");
Console.WriteLine();
Console.WriteLine(JsErrorHelpers.Format(e));
}
Console.ReadLine();
}
}
}

First we create an instance of the MsieJsEngine class and pass the following parameters to the constructor:

  1. engineMode - JavaScript engine mode;
  2. useEcmaScript5Polyfill - flag for whether to use the ECMAScript 5 Polyfill;
  3. useJson2Library - flag for whether to use the JSON2 library.

The values of constructor parameters in the above code correspond to the default values.

Then we evaluate a JavaScript expression by using of the Evaluate method and output its result to the console.

In addition, we provide handling of the following exception types: JsEngineLoadException and JsRuntimeException.

Release History

See the changelog.

License

Microsoft Public License (Ms-PL)

Credits

Who's Using MSIE JavaScript Engine

If you use the MSIE JavaScript Engine in some project, please send me a message so I can include it in this list:

About

MSIE JavaScript Engine - .NET wrapper for working with the Internet Explorer's JavaScript engines (JsRT version of Chakra, ActiveScript version of Chakra and Classic JavaScript Engine). Project was based on the code of SassAndCoffee.JavaScript and Chakra Sample Hosts.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages