`onselectionchange`的HTML5事件

时间:2013-09-23 13:41:47

标签: javascript html html5 dom

是否存在与IE遗留onselectionchange对应的标准跨浏览器HTML5事件(因此当当前选择更改时会触发)?

已编辑,我希望跟踪Selection object更改。

5 个答案:

答案 0 :(得分:2)

使用onchange

我建议使用jQuery来避免这些跨浏览器问题,但这并不意味着您应该跳过测试。 see here

查看 Rangy window.getSelection = rangy.getSelection

它可能有用......

/* 
IE 8 getSelection() missing object and properties simple hack
*/
if (window.getSelection == undefined) {                /* IE? */
    var wgS = setInterval(function(){                  /* wait for Rangy */
        if (rangy.initialized) {
            window.getSelection = rangy.getSelection;  /* do the stuff */
            clearTimeout(wgS);                         /* exit */
        }
     }, 10);
}

来源:网站

答案 1 :(得分:2)

您可以在keyup事件处理程序中找到光标位置。例如

function getCursorPos(evt){
  	if(window.getSelection){
		var sel=document.getSelection();
		if(sel.rangeCount==0){return;}
		var range = sel.getRangeAt(0);
		var p=range.startOffset;
	}else{
		var sel=document.selection;
		if(sel){
		var range=sel.createRange();
		var p=range.offsetLeft;}
	}

  document.getElementById('myoutposition').innerHTML=p;
  
  }

if(addEventListener){
  document.getElementById('myeditbox').addEventlistener('keyup',getCursorPos,false);
  }
else{
  document.getElementById('myeditbox').attachEvent('onkeyup',getCursorPos);}
<textarea id="myeditbox" style="width:100%;height:100px;"></textarea><br/>
the current cursor position is&nbsp;<output id="myoutposition">0</output>

答案 2 :(得分:1)

永远不会太晚:

// IE
myEditableElement.onselectionchange = onSelectionChange;
// work on chrome, untested on firefox
myEditableElement.addEventListener('focus', function (event) {
  document.addEventListener('selectionchange', onSelectionChange);
});
myEditableElement.addEventListener('focusout', function (event) {
  document.removeEventListener('selectionchange', onSelectionChange);
});

// Event
function onSelectionChange (event) {
  // todo
}

答案 3 :(得分:0)

标准为onchange

<select id="myName" onchange="myMethod(this)">
...
</select>

这也可以用于文本框等。

请参阅http://www.w3schools.com/tags/ev_onchange.asp

答案 4 :(得分:0)

您可能需要查看onChange属性。

<input type='text' onChange='alert(this.value)'>

当更改元素的值时会发生onchange事件。

对于单选按钮和复选框,当更改检查状态时会发生onchange事件。