|
|
(JavaScript) Enable Chilkat Classes in JavaScript
To use Chilkat classes in JavaScript, you must first enable them in the host application, as they are disabled by default. Instantiating a disabled class will cause a JavaScript exception. Chilkat classes can be enabled in four local filesystem access modes: sandbox, readOnly, writeOnly, or readWrite. You can also enable all classes in a chosen mode.Note: This example requires Chilkat v11.4.0 or greater.
var success = false;
// Chilkat classes within JavaScript are disabled by default.
// An attempt to instantiate a disabled Chilkat class results in a JavaScript exception.
// For example, try the following JavaScript without first enabling the Chilkat class:
// sb = new CkStringBuilder();
// sb.Append('Hello World');
// success = sb.WriteFile('c:/aaworkarea/helloWorld.txt','utf-8',true);
var sbJavaScript = new CkStringBuilder();
sbJavaScript.Append("sb = new CkStringBuilder(); sb.Append('Hello World'); success = sb.WriteFile('c:/aaworkarea/helloWorld.txt','utf-8',true);");
var js = new CkJs();
var result = new CkJsonObject();
result.EmitCompact = false;
// Run the script. This should result in an error because we haven't enabled the Chilkat CkStringBuilder class.
success = js.Eval(sbJavaScript,result);
if (success == false) {
// Examine the result for an exception.
console.log(result.Emit());
// The result contains this:
// {
// "exception": {
// "message": "Cannot create the chilkat object because the chilkat class is disabled in JavaScript. Fix by calling SetCkPermission before calling Eval or CallFunction",
// "stack": [
// {
// "func": "CkStringBuilder"
// },
// {
// "func": "<eval>",
// "file": "<input>",
// "line": 1,
// "col": 9
// }
// ]
// }
// }
}
// Enable the Chilkat CkStringBuilder JavaScript class for readWrite
js.SetCkPermission("CkStringBuilder","readWrite");
// The script should work now...
success = js.Eval(sbJavaScript,result);
console.log("success = " + success);
// If the CkStringBuilder class is enabled for readOnly or sandbox, then it will fail.
// - Chilkat methods that could directly or indirectly write to the filesystem require writeOnly or readWrite access.
// - Chilkat methods that read the local filesystem require readOnly or readWrite access.
// - Chilkat methods that don't interact with the local filesystem work in any mode including sandbox.
js.SetCkPermission("CkStringBuilder","readOnly");
success = js.Eval(sbJavaScript,result);
if (success == false) {
// Examine the result for an exception.
console.log(result.Emit());
// {
// "exception": {
// "message": "failed because this Chilkat method requires the writeOnly or readWrite permission",
// "stack": [
// {
// "func": "WriteFile"
// },
// {
// "func": "<eval>",
// "file": "<input>",
// "line": 1,
// "col": 67
// }
// ]
// }
// }
}
|