我遇到了让jQuery与transcrypt一起工作的问题。这是我的代码。我想检索带有load的文件并将其放入变量中。函数read_file工作正常,并在div元素中显示var。但是其他两个函数没有按预期工作:read_hidden_var仅在第二次单击后才起作用,而read_file_var根本不起作用,产生错误说:TypeError $ .py_get不是函数。
以下是代码:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
__pragma__ ('alias', 'S', '$')
class TestSystem:
def read_file(self):
S("#demo").load("https://raw.githubusercontent.com/bunkahle/Transcrypt-Examples/master/README.md")
def read_hidden_var(self):
document.getElementById('hidden_text').style.display='block'
S("#hidden_text").load("https://raw.githubusercontent.com/bunkahle/Transcrypt-Examples/master/README.md")
console.log(S("#hidden_text").html())
self.file_content = S("#hidden_text").html()
S("#hidden_text").html("")
document.getElementById('hidden_text').style.display='none'
alert(self.file_content)
def read_file_var(self):
S.get("https://raw.githubusercontent.com/bunkahle/Transcrypt-Examples/master/README.md", self.get_filecontent)
def get_filecontent(self, response):
self.file_content = response
alert(self.file_content)
testSystem = TestSystem()
和html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script src="__javascript__/read_file2.js"; charset="UTF-8"></script>
<title>Read File</title>
</head>
<body>
<main>
<h1>Read a file!</h1>
<p id="p1" class="para1">Read a file!</p>
<button id="button1" onclick="$(document).ready(read_file2.testSystem.read_file)">Click for retrieving text file</button><br><br>
<button id="button1" onclick="$(document).ready(read_file2.testSystem.read_file_var)">Click for retrieving text file into var</button><br><br>
<button id="button1" onclick="$(document).ready(read_file2.testSystem.read_hidden_var)">Click for retrieving text file into hidden paragraph</button><br><br>
<p id="demo"></p>
<p id="hidden_text"></p>
</main>
</body>
</html>
答案 0 :(得分:0)
&#34; py_get不是函数&#34;报告是由别名引起的。
单词get
在Python中具有特殊含义,因此它默认别名为py_get
,在此上下文中不存在。get
。
您可以取消联合js_get
或使用get
,因为该别名为js_get
。
所有别名都有类似的选项,可以在预定义的别名列表中看到:
http://www.transcrypt.org/docs/html/special_facilities.html#pragma-alias
在下面的修改后的代码中,我使用了!!!
,因为它影响最小。
(要查找修改,请搜索#!/usr/bin/env python
# -*- coding: utf-8 -*-
__pragma__ ('alias', 'S', '$')
class TestSystem:
def read_file(self):
S("#demo").load("https://raw.githubusercontent.com/bunkahle/Transcrypt-Examples/master/README.md")
def read_hidden_var(self):
# !!! Literally inserted JavaScript does not solve the second problem,
# so probably this isn't specific to Transcrypt
__pragma__ ('js', '{}', '''
console.log ("BEGIN read_hidden_var");
document.getElementById("hidden_text").style.display="block";
$("#hidden_text").load("https://raw.githubusercontent.com/bunkahle/Transcrypt-Examples/master/README.md");
console.log($("#hidden_text").html());
self.file_content = $("#hidden_text").html();
$("#hidden_text").html("");
document.getElementById("hidden_text").style.display="none";
alert(self.file_content);
console.log ("END read_hidden_var");
''')
def read_file_var(self):
# !!! Using js_get solves the first problem
S.js_get("https://raw.githubusercontent.com/bunkahle/Transcrypt-Examples/master/README.md", self.get_filecontent)
def get_filecontent(self, response):
self.file_content = response
alert(self.file_content)
testSystem = TestSystem()
)
双击问题难以解决。 我已经用纯JavaScript取代了相关代码,问题仍然存在。所以我强烈怀疑(但不是100%肯定)这是与Transcrypt没有特别关联的东西,而是底层程序逻辑。但我现在无法确定它。
infix