Я пытаюсь определить результат некоторой функции в зависимости от ScriptEngine вызывающего абонента:Detect ScriptEngine звонившего функция в в
//JScript
function doSomething()
{
if (ScriptEngine() === "VBScript")
return "this is VBScript";
else
return "this is JScript";
}
Но результаты:
//JScript
var str = doSomething(); //"this is JScript"
//VBScript
Dim str : str = DoSomething() '"this is JScript"
ScriptEngine()
функция всегда возвращает имя двигателя своего абонента , но я хотел бы знать имя вызывающего абонента doSomething()
(не передавая его в качестве параметра). Есть ли способ сделать это в ASP?
Мотивация заключается в том, что я написал класс утилиты JSON для использования на сайте ASP. Разбор строки JSON выполняется через eval
(с использованием проверки, которую я нашел в ответе this).
Результат eval
- это объект JScript (с массивами JScript и датами JScript как свойствами). Затем пользователь должен указать флаг, чтобы сообщить функции, если он хочет чистый объект JScript или ему нужен объект VBScript (с массивами и датами, преобразованными в их эквивалент VBScript). Я хотел бы исключить этот параметр.
//JScript
function parseJson(jsonString, isJsObject)
{
var parsedObject = parsingLogic(jsonString);
if (!isJsObject) //Would like to replace by engine check
convertVbProperties(parsedObject);
return parsedObject;
}
Вы можете получить лучшую помощь, если будет понятно, почему это важно. Почему имеет значение, на каком языке код, вызывающий функцию, записывается в контексте вашей проблемы? – AnonJr
@AnonJr, я добавил мотивацию к вопросу. Параметр 'isJsObject' не является большой проблемой, но было бы неплохо избавиться от него. – Raphael
Это имеет смысл. У меня пока нет ответа, но это поможет другим. – AnonJr