Если есть вопросы по скриптам

  • Автор темы Автор темы Oleg Butrin
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
Ответ: Если есть вопросы по скриптам

Попробуйте alert(myLayoutContextMenu.toSource()); - что, тоже ругается?
У меня этот скрипт работает без ошибок.
 
Ответ: Если есть вопросы по скриптам


Не по теме:
levin_va
Зачем вы тег в постах ставите?

 
Ответ: Если есть вопросы по скриптам

у вас ID CS5 или CS3 ? у меня CS5 может проблема в этом?
 
Ответ: Если есть вопросы по скриптам

Без разницы в обеих работает. Вы мне все таки скажите - вы точно запускаете родной скрипт, никак не поправленный, не в режиме отладки и такую ошибку выдает? Просто как то с трудом верится.
 
Ответ: Если есть вопросы по скриптам

Да пытался по разному - в ID CS5 из панели скриптов, пробовал ложить его в Startup script, все равно дает ошибку, переустановил ID CS5.5 результат тот же. Может быть проблема в Windows 7?
Именно неправленный скрипт, хотел использовать для своих целей. Пробовал и другие подобные скрипты где есть команда добавление в контекстное меню, тоже ни чего не получилась.
 
Ответ: Если есть вопросы по скриптам

Пробовал и другие подобные скрипты где есть команда добавление в контекстное меню
Не добавляется именно в контекстное меню, в основное все нормально?
 
Ответ: Если есть вопросы по скриптам

Ну давайте начнем с простейшего.
Код:
#targetengine "doalert"
var menuName = "Сделать алерт";
var myMenuItem  = app.scriptMenuActions.add(menuName);
myMenuItem.addEventListener('onInvoke', function(){main();});
var rightMouseMnu = app.menus.item("$ID/RtMouseLayout");
rightMouseMnu.menuItems.add(myMenuItem);

function main(){
	alert("Алерт сделан");
	}
Такое сработает?
 
Ответ: Если есть вопросы по скриптам

rightMouseMnu.menuItems.add(myMenuItem); дает ошибку - НЕДОПУСТИМЫЙ ОБЪЕКТ

Да именно так в основное проблем нет.

Да именно так в основное проблем нет.

Да именно так в основное проблем нет.
 
Ответ: Если есть вопросы по скриптам

Последняя от меня мысль (больше не осталось): 5-ю строку заменить на
Код:
var rightMouseMnu = app.menus.item[B](app.translateKeyString("$ID/RtMouseLayout"))[/B];
 
Ответ: Если есть вопросы по скриптам

непомогло. та же ошибка
 
Ответ: Если есть вопросы по скриптам

Ранее вы говорили, что пробовали и другие скрипты, где есть команда добавления в контекстное меню. Предлагаю вам посмотреть еще один скрипт на эту тему, swapImages, который у меня безупречно работает в ID SC5.5, Win 7/64. Он опубликован здесь.
Что я заметил, так там используется не addEventListener, а eventListeners.add.
 
Ответ: Если есть вопросы по скриптам

Да вроде пробовали и так (693) все равно не работает. На мой взгляд, какя-то левая версия семерки или что-то дополнительно установлено, конфликтующее с ES
 
Ответ: Если есть вопросы по скриптам

Swapping images этот скрипт тоже пробовал не работает.
 
Ответ: Если есть вопросы по скриптам

Винду переставить очень критично? Ну или соседнего компьютера попробовать? А что выдает алерт из 701 сообщения?
 
Ответ: Если есть вопросы по скриптам

А загрузиться в Windows с правами администратора пробовали?
 
Ответ: Если есть вопросы по скриптам

устанавливаю ID на другом компе. хочу попрововать запустить скрипт там, как сделаю отпишусь
 
Ответ: Если есть вопросы по скриптам

Снимок.PNG
alert(myLayoutContextMenu.toSource());
 
Ответ: Если есть вопросы по скриптам

В принципе, примерно так и должно быть. У меня \"LayoutContextMenu\"]"
Может, какая кривая руссификация ID? Хотя, вроде, говорите, что на двух разных пробовали. :(
 
Ответ: Если есть вопросы по скриптам

Получить доступ к контекстному меню можно и без участия мыши:
Код:
var mnu = app.menus.item("Layout Context Menu");
Перечень всех менюх можно получить таким скриптом (я сделал до 3-го уровня, больше, в принципе, и не нужно):
Код:
var mnu = app.menus;
var myRes = "";
for (i=0;i<mnu.length;i++){
	myRes+=mnu[i].name+"\r";
	var mySmnu = mnu[i].submenus;
	for (j=0;j<mySmnu.length;j++){
		try{myRes+="\t"+mySmnu[j].name+"\r";}catch(e){myRes+="\t**********\r";}
		var my2Smnu = mySmnu[j].submenus;
		for (k=0;k<my2Smnu.length;k++){
			try{myRes+="\t\t"+my2Smnu[k].name+"\r";}catch(e){myRes+="\t\t**********\r";}
			}
		var my2mnuItems = mySmnu[j].menuItems;
		for (k=0;k<my2mnuItems.length;k++){
			try{myRes+="\t\t"+my2mnuItems[k].name+"\r";}catch(e){myRes+="\t\t**********\r";}
			}
		}
	var mnuItems = mnu[i].menuItems;
	for (j=0;j<mnuItems.length;j++){
		try{myRes+="\t"+mnuItems[j].name+"\r";}catch(e){myRes+="\t**********\r";}
		}
	}
var myDoc = app.documents.add();
myDoc.pages[0].textFrames.add({
	geometricBounds:app.activeDocument.pages[0].bounds,
	contents:myRes
	});
Может быть, это поможет обойти "языковую" проблему?
 
Ответ: Если есть вопросы по скриптам

Перечень всех менюх можно получить таким скриптом

Мамадорогая, сколько букв!

Код:
var myRes = "";
(function f(menus, level){
    for (var i = 0, l = menus.length; i < l; i++) {
        var menuItem = menus[i];
        myRes += level + menuItem.name + '\r';
        if ('menuItems' in menuItem) f(menuItem.menuItems, level + '\t');
        if ('submenus' in menuItem) f(menuItem.submenus, level + '\t');
    }
})(app.menus, '');

var myDoc = app.documents.add();
myDoc.pages[0].textFrames.add({
    geometricBounds:app.activeDocument.pages[0].bounds,
    contents:myRes
    });
 
Статус
Закрыто для дальнейших ответов.