Перейти к основному содержимому

7.1. Как делать гиперссылки, по нажатию на которые выполняется код?

В: Как делать гиперссылки, по нажатию на которые выполняется код? Как делать кликабельный текст? Как сделать, чтобы по нажатию на текст что-то происходило?

О:

Гиперссылки в QSP делаются точно так же, как и в HTML-документах, то есть с использованием тегов <a> и </a>.

Например так:

*pl "На берёзе созрело несколько <a href=''>яблок</a>."

В атрибуте href, если говорить об html-документе, обычно пишется url — адрес страницы в интернете. Однако в QSP мы можем разместить внутри этого атрибута строку кода. Например такую:

яблоко=яблоко+1 & addobj "Яблоко"

Чтобы плеер понял, что в атрибуте href находится не url, а какой-то код, мы должны указать перед этим кодом ключевое слово EXEC:

*pl "На берёзе созрело несколько <a href='exec: '>яблок</a>."

Теперь нам нужно вставить после EXEC: нашу строку кода. Однако, мы уже использовали кавычки ("") для указания границ строки, и апострофы ('') для указания границ атрибута href. А в нашей строке кода тоже есть кавычки. Как быть?

Мы можем использовать три различных варианта:

Можно экранировать кавычки кода от QSP с помощью дублирования:

*pl "На берёзе созрело несколько <a href='exec:яблоко=яблоко+1 & addobj ""Яблоко""'>яблок</a>."

Либо мы можем заменить апострофы атрибута href на кавычки и экранировать эти кавычки от кода QSP:

*pl "На берёзе созрело несколько <a href=""exec:яблоко=яблоко+1 & addobj 'Яблоко'"">яблок</a>."

Оба способа равнозначны. Используйте тот, что удобнее.

Третий способ экранирования

Можно заменить кавычки кода на апострофы, и эти апострофы экранировать от HTML с помощью обратного слэша (данный способ не рекомендуется, так как может не работать в Quest Navigator, qSpider и других более новых версиях плеера):

*pl "На берёзе созрело несколько <a href='exec:яблоко=яблоко+1 & addobj \'Яблоко\''>яблок</a>."

Этот способ не рекомендуется к использованию, так как не во всех плеерах может работать подобное экранирование.