- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我有以下困境:
我正在使用 Brython,一切正常。我有一小段代码可以为我执行 ajax 请求,我将其添加到 header 中以绑定(bind)页面中当前元素上的所有内容。
from browser import document, ajax
# URL Query String
qs = ''
# URL to work on
url = ''
def post_data(url, qs):
req = ajax.ajax()
# Bind the complete State to the on_post_complete function
req.bind('complete', on_post_complete)
# send a POST request to the url
req.open('POST', url, True)
req.set_header('content-type', 'application/x-www-form-urlencoded')
# send data as a dictionary
req.send(qs)
def get_data(url, qs):
req = ajax.ajax()
req.bind('complete', on_get_complete)
# Bind the complete State to the on_get_complete function
req.open('GET', url+'?'+qs, True)
req.set_header('content-type', 'application/x-www-form-urlencoded')
req.send()
def on_post_complete(req):
if req.status == 200 or req.status == 0:
# Take our response and inject it into the html div with id='main'
document["main_area"].html = req.text
else:
document["main_area"].html = "error " + req.text
def on_get_complete(req):
if req.status == 200 or req.status == 0:
# Take our response and inject it into the html div with id='main'
document["main_area"].html = req.text
else:
document["main_area"].html = "error " + req.text
def account_click(ev):
get_data("/account", qs)
def contact_link_click(ev):
get_data("/contact", qs)
def logo_link_click(ev):
get_data("/main_page", qs)
def products_link_click(ev):
get_data("/products_page", qs)
def register_link_click(ev):
get_data("/register", qs)
document['login_link'].bind('click', account_click)
document['contact_link'].bind('click', contact_link_click)
document['logo_link'].bind('click', logo_link_click)
document['register_link'].bind('click', register_link_click)
document['running_link'].bind('click', products_link_click)
document['fitness_link'].bind('click', products_link_click)
document['tennis_link'].bind('click', products_link_click)
document['football_link'].bind('click', products_link_click)
document['golf_link'].bind('click', products_link_click)
好吧,现在我更大的问题是 register_link
从一开始就不在页面中。更准确地说,只有在单击 login_link
链接后,register_link
才会加载到 DOM 中,之后注册链接不会执行任何操作,因为事件无法从开始吧。
现在我知道我可以通过在该页面中再次导入它来轻松绕过这个问题,但我想避免多余的导入,而且我不太确定如何执行此操作。
编辑:或者brython有没有办法等待DOM完全加载?
最佳答案
正如您所注意到的,像这样编写 account_click
:
def account_click(ev):
get_data("/account", qs)
document['register_link'].active = True
document['register_link'].bind('click', register_link_click)
不起作用,因为程序在执行接下来的两行之前不会等待 get_data
完成。
解决方案是针对这种情况编写特定版本的 get_data
和 on_get_complete
(我假设“register_link”按钮位于页面中,但最初被禁用):
def complete_register(req):
"""Called when the Ajax request after "login_link" is complete."""
if req.status == 200 or req.status == 0:
# Take our response and inject it into the html div with id='main'
document["main_area"].html = req.text
# enable "register link" button and add binding
document['register_link'].disabled = False
document['register_link'].bind('click', register_link_click)
else:
document["main_area"].html = "error " + req.text
def get_data_and_register(url, qs):
req = ajax.ajax()
req.bind('complete', complete_register)
req.open('GET', url+'?'+qs, True)
req.set_header('content-type', 'application/x-www-form-urlencoded')
req.send()
def account_click(ev):
get_data_and_register("/account", qs)
另一种选择是保留通用函数 get_data
和 on_get_complete
,并添加可选参数回调:
def get_data(url, qs, callback=None):
req = ajax.ajax()
req.bind('complete', lambda req:on_get_complete(req, callback))
# Bind the complete State to the on_get_complete function
req.open('GET', url+'?'+qs, True)
req.set_header('content-type', 'application/x-www-form-urlencoded')
req.send()
def on_get_complete(req, callback=None):
if req.status == 200 or req.status == 0:
# Take our response and inject it into the html div with id='main'
document["main_area"].html = req.text
if callback is not None:
callback(req)
else:
document["main_area"].html = "error " + req.text
关于javascript - Brython 将点击事件绑定(bind)到页面中尚未存在的 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46662113/
帮助使用 Brython 在 Python 中运行一个简单的程序。 基础是从示例中获取的(它没有工作)文件 http://www.brython.info/gallery/pygame/chimp.h
我有一段用 Python 编写的代码。我想将该代码放在网页中。 Brython 似乎是将这两件事粘合在一起的最简单方法,但我没有可以在服务器端实际运行代码的服务器。 Brython 是否需要服务器端代
我目前正在尝试将 Brython 用于我正在制作的网站,但我无法从用户那里获取我的程序的数据。 我设置了一个框供用户输入 ID... ...然后我使用的当前方法是使用 GET 方法使其
我希望在 Brython 中导入我自己的库。 This page of the documentation旨在展示如何通过将适当的目录添加到 python 路径,但我无法使其工作,因为我无法使 Bry
几天来我一直在研究 Python,我已经到了想要将我的 Python 应用程序代码放到 Web 上的地步。基本上,该应用程序是关于向用户提出问题并根据用户的回答 [他在应用程序中输入] 来计算分数,然
晚安。这是一个关于Brython的问题欢迎任何帮助。 我正在寻找一种在每个时间间隔(可能是 200 毫秒)向左(或向右、顶部等)移动元素(例如,div)一些像素的方法。谁能帮帮我? 一旦他到达左边距就
我最近正在尝试 Brython,但我无法弄清楚如何在 Canvas 上绘制一个简单的矩形。我只能找到非常复杂的在 Canvas 上绘制的示例,这些示例对我来说不起作用,而且我无法在文档中找到明确的答案
我正在使用 Flask 编写一个 Web 应用程序,并且想在 Brython 中使用 browser.ajax 功能,但找不到可行的示例。如果有人演示如何在 Brython 中使用 ajax 的简短示
我正在加载 Brython 和 iFlyChat,但如果未注释 iFlyChat 脚本,Brython 将无法工作。我尝试了各种异步组合,但似乎有一些更基本的东西。 JSFiddle here和下面的
我的要求:从ID=“rtfile1”的输入类型=“file”读取内容并将其写入ID为“rt1”的文本区域 基于 [ https://brython.info/][1] 的文档我尝试读取文件,但失败并出
我对 Brython 框架很陌生,所以我的问题将是一个基本问题。对此深表歉意。 这是我的脚本“log.py”: import math class Logarithm: def__init__
所以我有以下困境: 我正在使用 Brython,一切正常。我有一小段代码可以为我执行 ajax 请求,我将其添加到 header 中以绑定(bind)页面中当前元素上的所有内容。 from b
我想在 brython 中使用 numpy。但我不知道如何在 brython 中导入额外的模块。如果您有类似的经历或疑问,请告诉我解决方法 最佳答案 你不能。Brython 是一个从类似 Python
我想在 brython 中使用 numpy。但我不知道如何在 brython 中导入额外的模块。如果您有类似的经历或疑问,请告诉我解决方法 最佳答案 你不能。Brython 是一个从类似 Python
编辑:Google Group post 我正在玩 Brython . 我正在尝试找出如何从 JavaScript 执行 Brython 代码。 http://www.brython.info/sta
首先感谢大家的帮助,这个问题困扰了我几天。我的母语不是英语,所以如果我犯了一些语法错误或问题描述不清楚,请原谅我。 :) 本来我只是一个只会用Python的爬虫。但是,我的公司希望我开发一种工具,可以
所以我尝试在 brython 中使用 websockets,这是 python3 的 javascript 实现。不幸的是,我运气不佳。 根据文档,函数 JSObject() 可用于在 brython
我很高兴看到现在可以在浏览器中编写Python代码了。这些是主要候选人(请添加我可能忽略的任何内容): Brython Skulpt PyPy.js Transcrypt Pyodide 但是如何在它
看来初始化brython需要这样: 我尝试在另一个 的 js 中调用 brython()在链接了 brython.js 但它似乎没有被调用之后。 当我最终在浏览器控制台中调用 brython 时,
我尝试使用 Brython。我有一个 Python 脚本 (test.py),我想在浏览器中显示该脚本的结果。 我试过了: 我的脚本是: x = int(input("Value: "
我是一名优秀的程序员,十分优秀!