javascript - 防止 iFrame 中的 HTML 退格。

标签 javascript jquery html

我使用 iFrame 作为文本编辑器,并希望确保正文的第一部分始终是 p 标记。因此,我将其设置为当用户第一次单击正文时它将插入

<p><br></p>

除非用户按住退格按钮,否则这是有效的。一旦用户用完退格键的明文,它就会删除上面的标签。

我已经捕获了退格键事件,但是如何防止用户删除段落标签?

最佳答案

我有 11 个选项(我假设您正在使用 jQuery)。

首先,捕获keydown事件,如果该值等于默认值,则阻止该操作。这可能会位于 iframe 的源 html 内部。

$('#editor').unbind('keydown').bind('keydown', function (event) {
    var doPrevent = false;
    if (event.keyCode === 8 && $('#editor').html() === '<p><br></p>'){
      
      event.preventDefault();
    }
});

选项二:只需将可编辑的元素设为 div 即可。

我更喜欢避免使用 iframe。他们让事情变得不必要地复杂(我认为)。

<!DOCTYPE html>
<html>
<head>
	<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js" ></script>
	<script type="text/javascript">
	
		function DoEdit(){
			
			var idContent = document.getElementById('idContent');
			idContent.contentEditable = "true";
			//var editor = (idContent.contentWindow || idContent.contentDocument).content.document;
			//editor.designMode = "on";
			//editor.body.contentEditable = "true";
			//editor.contentEditable = "true";
		}
		function ShowContent(){
			
			var contentValue = "<p><br></p>"+$('#idContent').html();
			alert(contentValue)
		}
		$(document).ready(function(){
		
			DoEdit();
			$('#showContentBtn').click(function(){
				ShowContent();
			});
		});
	</script>
</head>
<body>
<p><br></p>
<div style="text-align: center;margin:0 auto;width: 500px; height: 300px; border: solid; border-width: 2px;">
	<div id="idContent" style="text-align: left; width:100%; height: 100%">
	</div>
</div>
<div style="text-align: center;"><input id="showContentBtn" type="button" value="Show Content"></div>
</body>
</html>

添加了一个按钮,以防需要获取内容的值并将这些元素保留在其中。

选项3:如果需要在iframe内部,只需将上面的url设置为iframe的src即可。

<html>
<body>
<div style="text-align: center">Edit Frame</div>
<iframe src="/widgets/editor/rich-text" ></iframe>
</body>
</html>
  

我希望这能给您一些可以在项目中使用的想法。

关于javascript - 防止 iFrame 中的 HTML 退格。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28102172/

相关文章:

javascript - 如果删除了对应的rails View 模板,还可以删除js文件吗?

javascript - Knockout.js 使用push方法添加数据不更新 View

c# - 在我的 Controller 中将部分 View 制作为 html "string",用于 json 请求

javascript - 不需要的突出显示 HTML 元素的选择

javascript - 使用 javascript 函数设置 HTML 文本框值?

javascript - Js(和 HTML、CSS)中的背景图像幻灯片

javascript - jQuery 值拾取

jquery - 单击链接时在 div 中渲染部分内容

javascript - 鼠标悬停时如何改善此动画效果循环播放

javascript - 在 JavaScript/p5.js 中将单行字符串拆分为多行字符串