允许键盘快捷键同时限制 iframe 中的字符
Allow keyboard shortcuts while limiting characters in iframe
我有一个 iframe,用户可以使用它来输入和标记带有一些 html 的文本。但是我想限制他们可以输入的字符数。
为了解决这个问题,我使用了以下代码:
iframeDocument.onkeypress=function(e){
if(iframeDocument.body.textContent.length > 99 && e.keyCode != 8 && e.keyCode != 46 && e.keyCode != 40 && e.keyCode !=37 && e.keyCode != 38
&& e.keyCode !=39 && e.keyCode !=17){
e.stopPropagation();
e.preventDefault();
return false;
}}
这将他们限制为 100 个字符,同时仍然允许他们使用标记而不影响他们可以使用的字符数。这个方法有两个问题我很难解决。
- 当达到限制时,ctrl+c 和 ctrl+v 等键盘快捷键将被禁用。
- 当达到限制时,用户无法突出显示文本并键入另一个字符来替换它
我该如何解决这些问题?
即使您限制用户只能输入 100 个字符,他仍然可以通过禁用 javascript 来打破它。用户还可以使用检查工具编辑 javascript 或 html。所以这在客户端是完全不可能的。您还必须在服务器端进行验证。在你的 iframe 上你可能有一个文本区域,你可以试试这个。
<textarea onchange='this.value=(this.value.length<100)?this.value:"";' onkeypress='return (this.value.length<100);' >
</textarea>
我有一个 iframe,用户可以使用它来输入和标记带有一些 html 的文本。但是我想限制他们可以输入的字符数。
为了解决这个问题,我使用了以下代码:
iframeDocument.onkeypress=function(e){
if(iframeDocument.body.textContent.length > 99 && e.keyCode != 8 && e.keyCode != 46 && e.keyCode != 40 && e.keyCode !=37 && e.keyCode != 38
&& e.keyCode !=39 && e.keyCode !=17){
e.stopPropagation();
e.preventDefault();
return false;
}}
这将他们限制为 100 个字符,同时仍然允许他们使用标记而不影响他们可以使用的字符数。这个方法有两个问题我很难解决。
- 当达到限制时,ctrl+c 和 ctrl+v 等键盘快捷键将被禁用。
- 当达到限制时,用户无法突出显示文本并键入另一个字符来替换它
我该如何解决这些问题?
即使您限制用户只能输入 100 个字符,他仍然可以通过禁用 javascript 来打破它。用户还可以使用检查工具编辑 javascript 或 html。所以这在客户端是完全不可能的。您还必须在服务器端进行验证。在你的 iframe 上你可能有一个文本区域,你可以试试这个。
<textarea onchange='this.value=(this.value.length<100)?this.value:"";' onkeypress='return (this.value.length<100);' >
</textarea>