ClearScript apparently can't find a function added dynamically to the window object.
In a regular html file, I can call "var passwordAnalysis = zxcvbn($(this).val(), penalties);" just fine.
However, I am trying to execute https://raw.github.com/lowe/zxcvbn/master/zxcvbn.js inside a C# project.
I always get the exception:
ScriptEngineException: TypeError: Method or property not found.
I suspect it is because the zxcvbn method is added dynamically.
C# Code is as follows:
using Microsoft.ClearScript;
using Microsoft.ClearScript.V8;
public class RunScripts
{
public void GetPasswordStrength(string password, string[] penalties)
{
using (var engine = new V8ScriptEngine())
{
engine.Execute(ZxcvbnScript);
var result = engine.Script.zxcvbn(password, penalties);
//or
var result = engine.Script.zxcvbn(password);
//or
var result = engine.Script.zxcvbn(password);
}
}
}
Comments: Hi davisnw, Yes, the zxcvbn.js script appears to be designed for a browser environment with a `window` object or a CommonJS environment with an `exports` object. ClearScript provides a bare JavaScript environment with only the standard JavaScript built-ins. By the way, instead of exposing a host object for `window`, you could simply do this: ``` C# engine.Execute("window = this"); engine.Execute(ZxcvbnScript); ``` Cheers!
In a regular html file, I can call "var passwordAnalysis = zxcvbn($(this).val(), penalties);" just fine.
However, I am trying to execute https://raw.github.com/lowe/zxcvbn/master/zxcvbn.js inside a C# project.
I always get the exception:
ScriptEngineException: TypeError: Method or property not found.
I suspect it is because the zxcvbn method is added dynamically.
C# Code is as follows:
using Microsoft.ClearScript;
using Microsoft.ClearScript.V8;
public class RunScripts
{
public void GetPasswordStrength(string password, string[] penalties)
{
using (var engine = new V8ScriptEngine())
{
engine.Execute(ZxcvbnScript);
var result = engine.Script.zxcvbn(password, penalties);
//or
var result = engine.Script.zxcvbn(password);
//or
var result = engine.Script.zxcvbn(password);
}
}
}
Comments: Hi davisnw, Yes, the zxcvbn.js script appears to be designed for a browser environment with a `window` object or a CommonJS environment with an `exports` object. ClearScript provides a bare JavaScript environment with only the standard JavaScript built-ins. By the way, instead of exposing a host object for `window`, you could simply do this: ``` C# engine.Execute("window = this"); engine.Execute(ZxcvbnScript); ``` Cheers!