描述了我试图调用JavaScript函数时遇到的问题,但只有当if条件在JavaScript中计算为True时才会这样做。我正在用player和Eel开发一个音乐播放器项目,我想调用JS函数来自动更改歌曲封面图像,而不需要在前面的歌曲结束时点击按钮,在我想调用'eel.fine()‘的时候,在python中使用eel.fine(),但是我确定它为什么不能工作,或者如何作为Eel的新手来完成这个任务。
期望当条件变为真函数时,应该从python代码调用find,也就是说,当一首歌结束时,只想更改代码片段,,这里有一些代码可以很容易地用于再现问题或理解我需要帮助的内容。注意:为了理解,我删除了大部分代码,只添加了与我需要帮助的代码流相关的部分。
import eel
from pygame import mixer
eel.init('web')
js='function $fine(){document.getElementById("spl").live("click");}'
def my_update():
if pausev and not fine:
if not start and not mixer.music.get_busy():
#ok=js2py.eval_js(js)
# ok()
print("booom")
eel.fine() # This is the part I need help with
play()
print('new song up')
else:
print('old playing still')
else:
print('strictly paused')<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="description" content="">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Aishu's Magic-Music</title>
<link href="style.css" rel="stylesheet">
<script type="text/javascript" src="/eel.js"></script>
<script type="text/javascript" src="main.js"></script>
<script type="text/javascript">
eel.expose(fine);
function fine(){
document.getElementById("spl").live("click");
}
</script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js" type="text/javascript"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous">
</head>
<body>
<section class="wellcome_area clearfix" id="home">
<div class="container h-100">
<div class="row h-100 align-items-center">
<div class="col-12 col-md">
<div class="get-start-area">
<form class="form-inline">
<input type="button" id="repeat" class="submit" value="▶ Shower" onclick="generateQRCode(7)">
<input type="button" id="spl" class="submit" value="▶ Play" onclick="generateQRCode(2)">
<input type="button" class="submit" value=">> Skip" onclick="generateQRCode(3)">
</form>
</div>
</div>
</div>
</div>
<div class="welcome-thumb ">
<img id="qr" class="headshot headshot-1" src="img/bg-img/play.jpg" width="50%">
</div>
</section>
</body>
</html>// main.js
var whatever=1;
var loop_check=1;
function generateQRCode(data) {
if(data==2){
change()
if(whatever==1){
eel.generate_qr(1)(setImage);
whatever=0;
}
else
{
eel.generate_qr(data)(setImage)
}
}
else if(data==7){
change_loop()
eel.generate_qr(data)(setImage)
}
else{
eel.generate_qr(data)(setImage)
}
}
function change()
{
var elem = document.getElementById("spl");
if (elem.value=="|| Pause") elem.value = "▶ Play";
else elem.value = "|| Pause";
}
function setImage(base64) {
document.getElementById("qr").src = base64
}更新它部分工作,但不像预期的那样工作

是在正常运行过程中遇到的错误。
而当我打开检查控制台时的输出

桌面:
Windows
发布于 2021-10-27 08:29:56
在经历了大量的尝试和错误之后,我已经解决了这个问题,因为我刚接触过JavaScript、Eel,并与Python进行了连接,我后来才意识到在我的代码中,我尝试使用
document.getElementById("spl").live("click");和
document.getElementById("spl").trigger("click");当我用
document.getElementById("spl").click();之前没有公开JavaScript函数,因此当我在公开之后再次尝试使用.click()时,我意识到这是我一直缺少的。虽然在没有鳗鱼的JavaScript中,正如所述的那样,here和here的工作原理大致相同,但由于某些原因,Eel在使用Eel时只会在调试器中造成这种奇怪的暂停,如果不是,则会创建websocket错误。
很高兴我终于找到了一种可行的方法。
https://stackoverflow.com/questions/69732918
复制相似问题