Ошибка выполнения JS

Поддержка
  • Есть переменная
    LINK: "<a rel="" data-bind="" target="" href="">text</a>"
    Есть скрипт который возвращает text
    [[LINK]].split(/<a>([^])</a>/)[0]
    записывающий результат в RESULT
    После выполнения RESULT присваевается пустое значение ""
    Как я понимаю, в скрипте возникает исключение. Как отловить его, непонятно в чем дело совсем.

  • @derkote said in Ошибка выполнения JS:

    <

    ситуация не совсем для сплита. Тут или индексОФ или Регекс
    вот с индексОФ пример

    [[LINK]].substring([[LINK]].indexOf('">')+2, [[LINK]].length-4)
    

    это вернет text
    зы: переменная result зарезервирована БАСом.

    пример с регекс

    [[LINK]].match(/>(.+?)</)[1]
    
  • [[LINK]].match(/>(.+?)</)[1]
    

    Спасибо!) А в данном случае это ж будет первое и единственное вхождение, там не [0] должно быть?

    indexOf('">')
    

    Нужно ли кавычку забэкслешить?
    Типо так:

    indexOf( ' \"> ' )
    
  • @derkote кавычку не нужно ескейпить, потому что они обрамлены одинарными кавычками. Если бы там были вместо " такие ' то обрамить нужно было бы двойными ".

    там должно быть именно [1], все так, как я написал. Если ты укажешь 0 то получишь вместо text это >text<

    и вообще для таких случаем уже придумали для нас удобные способы, работать с регулярками можно и без JS кода: 0_1482503394978_asdaw.xml

  • @out

    [[LINK]].substring([[LINK]].indexOf('">')+2, [[LINK]].length-4))
    
    [17:25:16] Поток №1 : SyntaxError: Parse error Номер строки:5 Во время выполнения скрипта { page().script(VAR_LINK.substring(VAR_LINK.indexOf('">')+2, VAR_LINK.length-4)),function(){ VAR_SAVED_SCRIPT_RESULT_NAME = _result() section_start("test", 1,function(){ })})} 
    
  • @derkote там просто в конце одна лишняя скобка, я неудачно скопировал из консоли firefox
    сверху поправил.

  • В общем разобрался.
    В группе "Браузер" есть функция "Яваскрипт", и вот она работает странно, либо вообще не работает.
    В группе "Инструменты" есть функция "Выполнить код", там JS работает отлично :)

  • @derkote 1я используется для выполнения js на странице, она имеет доступ к document. Выполнить код - это просто выполнить какой то js без обращения к document.

  • @DrPrime
    Ну не один из примеров выше через "Яваскрипт" так и не заработал, а через "Выполнить код" все работает.

  • @derkote так изначально оно и писалось под выполнить код.

  • @derkote

    Ну не один из примеров выше через "Яваскрипт" так и не заработал, а через "Выполнить код" все работает.

    В этой версии чтобы передавать переменные в действие "Яваскрипт" их нужно эскейпить. Уже исправил, в следующей(будет в понедельник) должно работать и так

    [[LINK]].match(/\>(.*?)\<\/a\>/)[1]
    

    Но лучше для регулярных выражений использовать действия "Выполнить код" или модулем "Регулярные выражения" или Xpath