0
函数内部我有一个事件处理函数。到现在为止还挺好。但在那个事件处理程序,我想捕获输入按下并替换为HTML。跨浏览器事件处理程序必须捕获[ENTER]
我已经做了这样的:
CrossBrowserEventHandler(Editor, 'keyup', function(Event) { myFunctionRef(idname, Event) });
var myFunctionRef = function myFunction(idname, Event)
{
var keyCode;
if (!Event && window.event) {
Event = window.event;
}
if (Event) {
keyCode = (window.Event) ? Event.which : Event.keyCode;
if (keyCode == 13) {
Event.target.ownerDocument.execCommand("inserthtml",false,'<br />');
Event.returnValue = false;
}
}
PushText(idname); /* pushes the input from a rich text iframe to a textarea */
}
的跨浏览器的事件处理函数如下:
function CrossBrowserEventHandler(target,eventName,handlerName)
{
if (target.addEventListener) {
target.addEventListener(eventName, handlerName, false);
}
else if (target.attachEvent) {
target.attachEvent("on" + eventName, handlerName);
}
else {
target["on" + eventName] = handlerName;
}
}
在第一部分中我捕捉到的键码13(回报)和替换它通过一个execCommand到一个HTML换行符。它这样做,但两次。它不会取消/删除实际的返回按下事件。
任何想法(除了标准的建议使用JS框架,我不能有很多的原因,其中之一是实际学习的过程)?
在这种情况下,我想捕捉13,而不是10 – 2010-09-20 06:33:24
可以是事件冒泡的情况下 - 我已经编辑我的答案。 – VinayC 2010-09-20 07:24:43
不幸的是,它仍然通过execCommand之后的Enter。让我详细说明这一点。它用于富文本区域功能,并且由于大多数浏览器将返回转换为HTML段落(IE和FF)或包含在div中的换行符,因此为了统一起见,我希望它将返回转换为换行符。 – 2010-09-20 07:52:30