2013-08-28 1 views
0

Я пытаюсь определить результат некоторой функции в зависимости от 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; 
} 
+0

Вы можете получить лучшую помощь, если будет понятно, почему это важно. Почему имеет значение, на каком языке код, вызывающий функцию, записывается в контексте вашей проблемы? – AnonJr

+0

@AnonJr, я добавил мотивацию к вопросу. Параметр 'isJsObject' не является большой проблемой, но было бы неплохо избавиться от него. – Raphael

+0

Это имеет смысл. У меня пока нет ответа, но это поможет другим. – AnonJr

ответ

0

В итоге я оставил параметр isJsObject. Поскольку мы использовали VBScript большую часть времени, а JScript использовался только для создания библиотек, это работало нормально.

 Смежные вопросы

  • Нет связанных вопросов^_^