Ajax ломает фрейм-сет только в IE
У меня проблема с поломкой фрейм-набора, и я получил небольшую помощь здесь, на форуме. Теперь я наконец-то отследил, когда дела пойдут на юг, и вот моя текущая проблема.
1 У меня есть набор фреймов с Top, Menu и Main 2. Ссылки в Menu открывают представления в Main 3. Это разбивает на сохранение документов в Main. После сохранения все ссылки в меню откроются в новом окне.
НО - И вот действительно странная вещь, которую я обнаружил после двух дней проверки базовой цели и тому подобное.
Я ТОЛЬКО ломаюсь, если я изменяю значение, которое запускает Ajax-вызов. Если я добавляю комментарий в поле комментария или меняю числовое значение, все хорошо. Я могу сохранить и набор кадров в порядке и хорошо. Если я изменю раскрывающийся список, который запускает вызов Ajax перед сохранением, то мой набор фреймов ломается.
Это только IE (7 и 8), и Firefox не имеет этой проблемы.
Это пример моего кода Ajax (у меня около 4 различных вызовов)
function fillUtmelding(refnr){
var f = document.forms[0];
var url = getDbUrl() + '/(FinnBeholdningValg)?OpenAgent&refnr=' + refnr + "&dbid=C1256B7D0033B1DF" + "&" + Math.round(Math.random() * 500);
var fondOppslag = new Ajax.Request(url, {
method: 'get',
onComplete: function(req){
var liste = req.responseText;
var startListe = liste.split(';');
arrListe = startListe[0].split('$');
f.f.value = arrListe[0];
f.fisin.value = arrListe[1];
f.andeler.value = arrListe[2];
for (j = 1; j < 14; j++) {
name = "f_" + j;
fisin = "fisin_"+ j;
andeler = "andeler_" +j;
var nyListe = startListe[j].split('$')
if (nyListe[1] != 'Plassering'){
f[name].value = nyListe[0];
f[fisin].value = nyListe[1];
f[andeler].value = nyListe[2];
}
}
}
});
}
Edit: у меня нет проблем с вызовами ajax, насколько я вижу. Я возвращаю значения и использую их по назначению. Может ли быть какая-то настройка keepAlive или что-то подобное?
1 ответ
Где-то в коде JS из правого фрейма была функция внутри, которая была:
name = "(something)";
Конечно, без указания вар. IE сошел с ума, потому что, похоже, эта простая строка изменила имя фрейма.... затем, когда он щелкнул по другому фрейму, он не смог его найти, и, таким образом, открыл содержимое в новом окне.
Проблема исправлена.
PS. Будьте осторожны с тем, что вы используете для имени переменной:)