Передача переменной Python в JavaScript

#python #html #web

#python #HTML #паутина

Вопрос:

Я пытаюсь выполнить некоторый код JavaScript через Python.

 def home():
    code = """
    var regexp = new RegExp(/playerCaptionsTracklistRenderer.*?(youtube.com/api/timedtext.*?)"/);
    var url = regexp.exec(document.body.innerHTML)[1];
    open("caption.py?url="   encodeURIComponent(url));
    """
    code = quote(code, safe='~()*!.'')
    return """<a href="javascript:(function(){ code })()">YouTube Transcriber</a>"""
 

Как я понимаю, переменные из Python должны автоматически передаваться в JavaScript, но я получаю следующее исключение в последней строке в JavaScript:

Uncaught ReferenceError: code is not defined

Комментарии:

1. «Как я понимаю, переменные из Python должны автоматически передаваться в JavaScript» нет? Я не уверен, почему вы этого ожидаете

Ответ №1:

Вы не говорите python помещать содержимое code в возвращаемую вами строку. Вы могли бы сделать это так:

 return """<a href="javascript:(function(){ """   code   """ })()">YouTube Transcriber</a>"""
 

Вы не можете просто поместить имя переменной в строку и ожидать, что ее содержимое будет автоматически помещено в строку. Непонятно, почему вы ожидаете, что это произойдет. Это то, что вы явно должны сделать, используя либо форматирование строки, либо конкатенацию.

Ответ №2:

Внутри вашего return оператора, внутри функции JS, буквально есть слово «код», которое не определено. Вероятно, вы хотели ввести значение переменной code , и в этом случае вам нужно разбить строку на части и добавить code переменную между ними следующим образом:

 return """<a href="javascript:(function(){"""   str(code)   """})()">YouTube Transcriber</a>"""