2015-11-23 3 views
0

Я пытаюсь отладить javascript, который выполняется внутри Adobe indesign. Первая исполняемая строка возвращает «неопределенная не является объектом»Ошибка JavaScript «Undefined is not a object»

if (app.documents.length==0) { exit(); } 

Может Adobe переместило вложенные объекты «документы» на более высокий уровень?

+2

Любое «приложение» или «документы» не определено. Я не знаю достаточно о среде сценариев, чтобы сказать, что; если вы можете выводить информацию об отладке, попробуйте 'console.log (typeof app)', чтобы увидеть, есть ли у вас дескриптор на правом объекте 'app'. – nrabinowitz

+2

Вам нужно указать дополнительную информацию. что в приложении, что такое документы и т. д., возможно, JSON.stringify (приложение) и включить это в свой вопрос – Gabs00

ответ

-1

Чтобы быть в безопасности, я хотел бы предложить, вы использовать что-то вроде этого:

if (app === undefined || app.documents === undefined || app.documents.length === 0) { 
    exit(); 
} 

exit() будет выполняться, если app или app.documents или app.documents.length не определен или app.documents.length является 0. Это устраняет проблему исключения, потому что Javascript перестанет оценивать условия, после того как вы найдете «true».

Обязательно используйте === вместо ==, чтобы обеспечить сравнение типов.

Надежда, что помогает

0

Ваш код может быть безопасным, но, чтобы быть эффективным убеждаются скрипт правильно целенаправленными. I.e. если ваша отладка обработки от ESTK - выбрать целевое приложение из левого угла вверх DropDownList или поместить эту строку в коде очень верх:

#target indesign 
1

Cashmirek, вероятно, прав. Если вы запускаете свой скрипт изнутри ExtendScript ToolKit, вам нужно либо ввести команду #target, либо выбрать InDesign в списке приложений.

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