LINUX.ORG.RU

Набыдлокодил, в чём ошибка не пойму.

 , , ,


0

2

Пытаюсь открыть файл из node-webkit во внешней ассоциированной программе, с помощью node-webkit-овской gui.Shell.openItem(). Как делаю...

HTML:

<a class="external-item" href="../data/video.mkv">Open</a>

JS:

$( ".external-item" ).on( "click", function( event ) {
    event.preventDefault();
    console.log( "isDefaultPrevented? " + event.isDefaultPrevented());
    console.log( $( this ).attr( "href" ) );
    gui.Shell.openItem( $( this ).attr( "href" ) );
});

В консоли:

[3718:0305/211220:INFO:CONSOLE(337)] ""isDefaultPrevented? true"", source:  (337)
[3718:0305/211220:INFO:CONSOLE(338)] ""../data/video.mkv"", source:  (338)

Плеер запускается, файл открывается, а затем сообщение об ошибке:

Uncaught node.js Error 

Error: Syntax error, unrecognized expression: ../data/video.mkv
     at Function.db.error (eval at onerror (file:///home/prj/beta/menu/ldr), <anonymous>:3:12719)
     at ob (eval at onerror (file:///home/prj/beta/menu/ldr), <anonymous>:3:18587)
     at xb (eval at onerror (file:///home/prj/beta/menu/ldr), <anonymous>:3:21250)
     at Function.db (eval at onerror (file:///home/prj/beta/menu/ldr), <anonymous>:3:7381)
     at n.fn.extend.find (eval at onerror (file:///home/prj/beta/menu/ldr), <anonymous>:3:23487)
     at n.fn.init (eval at onerror (file:///home/prj/beta/menu/ldr), <anonymous>:3:24058)
     at n (eval at onerror (file:///home/prj/beta/menu/ldr), <anonymous>:3:403)
     at HTMLAnchorElement.eval (eval at onerror (file:///home/prj/beta/menu/ldr), <anonymous>:71:16)
     at HTMLAnchorElement.n.event.dispatch (eval at onerror (file:///home/prj/beta/menu/ldr), <anonymous>:4:8066)
     at HTMLAnchorElement.r.handle (eval at onerror (file:///home/prj/beta/menu/ldr), <anonymous>:4:4767)


Ответ на: комментарий от CYB3R

Ну хоть кто-то вспомнил где в первую очередь искать ошибку, — в ДНК!

Серьёзно если, что-нибудь заметил?

varchar
() автор топика

Syntax error, unrecognized expression: ../data/video.mkv

Я, конечно, ноды не знаю, но кажется мне, что с путём косяк у тебя.

aleks13
()

Я не разбираюсь в js, но такое ощущение, что ты ему даёшь объект вместо строки с путём.

deterok ★★★★★
()
Ответ на: комментарий от deterok

Были похожие мысли: объект там или this не то, что думается. Но вроде же:

console.log( $( this ).attr( "href" ) );
[3718:0305/211220:INFO:CONSOLE(338)] ""../data/video.mkv"", source:  (338)
Путь — строка. Что её как код выполнить пытается? Надо смотреть может где-то в других местах какой-то забытый обработчик того-же события...

varchar
() автор топика
Ответ на: комментарий от aleks13

С путём вместо подстановки/раскрытия также открывается и валится с ошибкой - ничего не изменилось.

А вот с обработчиком кнопочки с id=«btn»

$( "#btn" ).click(function() {
   gui.Shell.openItem('../data/video.mkv');
});
Нормально работает.

varchar
() автор топика
Ответ на: комментарий от KennyMinigun

То копипаста из эмулятора терминала, откуда запускаю, там все строки выводятся так, в 4-х кавычках, например:

""isDefaultPrevented? true""
из первого поста.

varchar
() автор топика
Ответ на: комментарий от varchar

мож оно не может с ссылкой так работать. ссылка это переход. по кнопке ведь работает. можеш попробывать такое. в хреф засунуть «#», а путь к файлу в любой дата-атрибут. на ссылку повесить онклик и в нем считать путь с атрибута и запустить.

http://stackoverflow.com/questions/3465750/javascriptvoid0-or-onclick-return-...

ZuBB ★★★★★
()
Ответ на: комментарий от varchar

Путь — строка. Что её как код выполнить пытается?

Уверены что строка?

console.log( typeof $( this ).attr( «href» ) );

Что показывает?

Vit ★★★★★
()

aleks13, ZuBB, Vit, спасибо парни! Разобрался. Таки ещё один обработчик был в другом месте, он и валил.

varchar
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.