#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>"""