#javascript #opera
#javascript #opera
Вопрос:
Я пишу light wyswig (iframe). У меня есть функция, которая подсчитывает длину в iframe при вводе события и изменении в поле (для оставшихся символов) количества символов. Но в Opera 9.24, когда я меняю окно браузера innerHTML, я отправляюсь в начало страницы html.
//this.doc - iframe document
$(this.doc).keydown(function(e)
{
if (e.ctrlKey || e.metaKey) isCtrl = true;
if (e.keyCode == 9) { this.execCommand('indent', false); return false; }
if (e.keyCode == 66 amp;amp; isCtrl) { this.execCommand('bold', 'bold'); return false; }`enter code here`
if (e.keyCode == 73 amp;amp; isCtrl) { this.execCommand('italic', 'italic'); return false; }
}.bind2(this)).keyup(function(e)
{
isCtrl = false;
if (e.keyCode == 13)
{
return true;
}
if(this.opts.maxlength)
this.checkLength();
if(this.opts.autoSync)
this.syncCode();
}.bind2(this));
checkLength: function() {
var html = this.getHtml();
if (html.length >= this.opts.maxlength) {
html = html.substr(0, this.opts.maxlength );
this.setHtml(html);
alert('Комментарий должен содержать до ' this.opts.maxlength);
} else {
var number = this.opts.maxlength - html.length;
//li_counter - box for characters left
this.li_counter.html("Осталось символов: " number);
}
// bind2
Function.prototype.bind2 = function(object)
{
var method = this; var oldArguments = $.makeArray(arguments).slice(1);
return function (argument)
{
if (argument == new Object) { method = null; oldArguments = null; }
else if (method == null) throw "Attempt to invoke destructed method reference.";
else { var newArguments = $.makeArray(arguments); return method.apply(object, oldArguments.concat(newArguments)); }
};
};
},
Ответ №1:
Вы уверены this.doc является ли IFRAME документом, а не по какой-то причине родительским документом? Где this.doc установить?
Кстати, Opera 9.24 уже довольно старая, и у нее не должно быть много пользователей. Есть ли какая-то конкретная причина, по которой вам нужно протестировать эту устаревшую версию?