2013-02-14 4 views
1
function getPosition() { 

    if ($.browser.msie) 
    { 
     var textPosition = document.selection.createRange().duplicate(); 
    } 
    else($.browser.mozilla || $.browser.opera || $.browser.safari) { 
     var textPosition = window.getSelection(); 
    } 
} 



<div><textarea rows="3" cols="50" name="textarea1" id="textarea1" onChange="javascript:storeCursorPosition();" onClick="javascript:getPosition();" onKeyPress="javascript:getPosition();" onFocus="javascript:getPosition();"></textarea></div> 

<input type="Button" onclick="javascript:if(textPosition.text == null){alert('No position selected')}else{alert('position selected')};"> 

У меня есть код выше, который не работает в Chrome, Safari и т. Д. Я получаю предупреждение «Нет позиции выбран» все время, за исключением IE. В IE я получаю предупреждение о позиции.Выбор текста в хром и т. Д.

Любая идея, почему она не работает, кроме IE ??

+1

'textPosition' не имеют сфер вне этой функции. – BenM

+2

В браузере нет необходимости! 'if (window.getSelection) {} else {}' – epascarello

ответ

2

textPosition не имеет возможности за пределами функции getPosition(). Добавление его в качестве переменного window должен работать, но не является идеальным:

var textPosition = null; 

function getPosition() { 

    if(!window.getSelection) 
    { 
     textPosition = document.selection.createRange().duplicate(); 
    } 
    else 
    { 
     textPosition = window.getSelection(); 
    } 
} 
+0

Aaahhh :) но все равно не работает :(Я создал jsfiddle здесь: http://jsfiddle.net/5qtLS/ и даже если я что-то пишу в текстовом поле , в chrome он по-прежнему предупреждает меня о том, что не выбрано ни одной позиции. Когда вы нажимаете в текстовом поле и нажимаете кнопку, он должен оставаться в текстовом поле и показывать предупреждение с выбранной позицией. – Graahf

+0

Обнаружил ошибку в моем собственном коде, так что теперь он работает:) THX для помощи – Graahf

Смежные вопросы