【发布时间】:2015-12-30 08:15:53
【问题描述】:
我正在我的 Django 应用程序中进行问答测试,并向用户提示寻求的答案,我希望输入字段具有与预期答案字符串相同的 width。
目前我正在做的是:
-
后端,改组答案:
width = ''.join(random.sample(answer,len(answer))) -
前端,当我的 ajax 请求成功时:
$('#inputNotDisplayed').text(data.width); // put the answer string in a hidden div that has // the same css characteristics as my answer receiver input (font-size, font-family...) $('#answerInput').width($('#inputNotDisplayed').width()).focus(); // give its width to the visible input that is meant to received the answer // and give the focus to the input $('#inputNotDisplayed').remove();
它工作得很好,但它有一个主要缺陷:您可以通过检查接收到的数据很容易地得到改组的字符串。
我看到的另一个选项是,当 Q 和 A 数据存储在数据库中时,我可以计算答案的宽度,以便在提出问题时产生它,但是如果我更改我想使用的字体或它的大小 ?
有没有办法知道特定字体的每个字符大小的宽度,是否可以在后端使用?还有什么想法吗?
另外,我没有使用等宽字体,我不想;)。
【问题讨论】:
-
用星星或其他符号来表示有多少个字符会不会更容易?
-
由于许多原因,您无法可靠地预先计算字符串的像素宽度。为什么你害怕你的用户偷看你的 JavaScript / XHR?那是某种敏感数据吗? (好像不是)
-
@StaceyBurns,肯定会更容易,但出于某种设计原因,它不是一个选项。
-
就我个人而言,我根本不认为这是一个问题,再说一遍,它是唯一可靠的方法......(其他然后在天空中通过箍,测量每个字母组合和计算)
-
没有简单的、仅限后端的解决方案,因为字符长度取决于用户浏览器、操作系统以及系统中是否打开了任何字体抗锯齿功能(以及哪个)。
标签: javascript jquery python css django