最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - HTML5 ContentEditable not working in Chrome - Stack Overflow

programmeradmin2浏览0评论

I am building a HTML5 webapp and I tried using contenteditable feature to make a in-place edit of text,but for some reason I couldn't get "editing" to work.

EDIT: I am using Chrome 12.0.xx

  • It highlights the Element(I can see it by CSS)
  • I also tested object.isContentEditable which returns true
  • I tried changing <lable> to other elements like <div>,<p>,<span> nothing works.Only <textarea> works but I am guessing that has got nothing to do with HTML5 or contenteditable attribute.
  • blur event gets fired on exit of edit mode.(I can see from debugger)

With some clue in question How do I figure out why the contenteditable attribute doesn't work? I tried turning off of all CSS but no luck.

The only thing is, I am adding my elements via javascript rather that HTML source

JS Code:

var newLi =document.createElement("li");
var newLable=document.createElement("lable");
newLable.className="labletext";
newLable.contentEditable="true";
newLable.innerText=String(localStorage["task."+i+".taskValue"]);
newLable.addEventListener('blur',editTask,false);
newLi.appendChild(newLable);
Parent.appendChild(newLi);

function editTask()
{
   var keyid=this.id;
   var startchar = keyid.lastIndexOf("_");
   var endchar=keyid.length;        
   var taskId=parseInt(keyid.substring(startchar+1,endchar));

   localStorage.setItem("task."+taskId+".taskValue",this.innerText);
   loadTasks("tasklist");
}

I am building a HTML5 webapp and I tried using contenteditable feature to make a in-place edit of text,but for some reason I couldn't get "editing" to work.

EDIT: I am using Chrome 12.0.xx

  • It highlights the Element(I can see it by CSS)
  • I also tested object.isContentEditable which returns true
  • I tried changing <lable> to other elements like <div>,<p>,<span> nothing works.Only <textarea> works but I am guessing that has got nothing to do with HTML5 or contenteditable attribute.
  • blur event gets fired on exit of edit mode.(I can see from debugger)

With some clue in question How do I figure out why the contenteditable attribute doesn't work? I tried turning off of all CSS but no luck.

The only thing is, I am adding my elements via javascript rather that HTML source

JS Code:

var newLi =document.createElement("li");
var newLable=document.createElement("lable");
newLable.className="labletext";
newLable.contentEditable="true";
newLable.innerText=String(localStorage["task."+i+".taskValue"]);
newLable.addEventListener('blur',editTask,false);
newLi.appendChild(newLable);
Parent.appendChild(newLi);

function editTask()
{
   var keyid=this.id;
   var startchar = keyid.lastIndexOf("_");
   var endchar=keyid.length;        
   var taskId=parseInt(keyid.substring(startchar+1,endchar));

   localStorage.setItem("task."+taskId+".taskValue",this.innerText);
   loadTasks("tasklist");
}
Share Improve this question edited May 23, 2017 at 12:32 CommunityBot 11 silver badge asked Jun 12, 2011 at 22:51 Pavan KeerthiPavan Keerthi 1,6914 gold badges18 silver badges22 bronze badges 4
  • You don't need to supply the second argument to substring if you want to go to the end of the string. Just keyid.substring(startchar+1) is good. – Šime Vidas Commented Jun 12, 2011 at 23:07
  • You know that addEventListener doesn't work in IE8, right? – Šime Vidas Commented Jun 12, 2011 at 23:09
  • You know that innerText doesn't work in Firefox, right? – Šime Vidas Commented Jun 12, 2011 at 23:10
  • Hi,thanks for letting me know.I changed code.Also,I am focusing on making this app for chrome, so IE8 is not issue for me right now.I will keep that in mind. – Pavan Keerthi Commented Jun 12, 2011 at 23:13
Add a ment  | 

2 Answers 2

Reset to default 4

It's

document.createElement('label')

not 'lable'

Live demo: http://jsfiddle/XuAfA/1/

The demo shows that the LABEL is editable.

For anyone ing later here,I Found the issue.I also enabled draggable attribute on <li> hence click event is hijacked by <li> events before reaching <label> child. Its answered here How can I enable 'draggable' on a element with contentEditable?.

发布评论

评论列表(0)

  1. 暂无评论