Здравствуйте, послу установки sp2 появились такие проблемы(а может были, но вылезли):
1)
function mMakeFrame(m, index){
var newDiv=document.createElement("DIV");
newDiv.className="menuFrame";
newDiv.id="menu"+index;
newDiv.innerHTML=mMakeFrameHTML(m);
document.body.appendChild(newDiv);
}
appendChild() не выполняеться, пишет "операция прервана" и вылетает в "невозможно отобразить страницу", при чём, при показе алерта, видно созданный фрейм.
При запуске, iframe не используеться и должно показываться содержание div'а, но не показываеться при чём, если перед текстом поставить <script>alert('1')</script> показываеться.
3)
В IE, если переход по iframe'у осуществляеться на не существующую страницу, то в div содержание не передаёться(В NS и Opera всё нормально), и появляеться ошибка "Отказано в доступе".
4)
В примере на http://www.cross-browser.com устанавливаеться onerror для img, для iframe поставить не получаеться.
Так <iframe id="nav" onerror="f()"> у меня не получаеться, а через getElementById он почему-то его не находит.
Здравствуйте, raw_loot, Вы писали:
_>Здравствуйте, послу установки sp2 появились такие проблемы(а может были, но вылезли):
_>1)
function mMakeFrame(m, index){
var newDiv=document.createElement("DIV");
newDiv.className="menuFrame";
newDiv.id="menu"+index;
newDiv.innerHTML=mMakeFrameHTML(m);
document.body.appendChild(newDiv);
}
_>appendChild() не выполняеться, пишет "операция прервана" и вылетает в "невозможно отобразить страницу", при чём, при показе алерта, видно созданный фрейм.
По поводу этого пункта.
Может ты не все нам рассказал? Потому что следующий код в SP2 работает на ура:
_>При запуске, iframe не используеться и должно показываться содержание div'а, но не показываеться при чём, если перед текстом поставить <script>alert('1')</script> показываеться.
В смысле iframe не используется?
У тебя срабатывает onload и происходит замещение содержимого div'а на содержимое iframe'а. Твой alert это и демонстрирует. Данное поведение наблюдается не только на SP2.
onload Event
Fires immediately after the browser loads the object.
_>3) _>В IE, если переход по iframe'у осуществляеться на не существующую страницу, то в div содержание не передаёться(В NS и Opera всё нормально), и появляеться ошибка "Отказано в доступе".
Из соображений секьюрности.
_>4) _>В примере на http://www.cross-browser.com устанавливаеться onerror для img, для iframe поставить не получаеться. _>Так <iframe id="nav" onerror="f()"> у меня не получаеться, а через getElementById он почему-то его не находит.
У iframe нет события onerror, а у img есть.
См. MSDN. _>.
Здравствуйте, DrZubr, Вы писали: DZ>По поводу этого пункта. DZ>Может ты не все нам рассказал? Потому что следующий код в SP2 работает на ура:
Прикол в том, что если appendChild закомментировать ошибка исчезает(проблема только с IE).Выложу полный код(он маленький)
core.js
function setMenu(layer){
document.getElementById(layer).innerHTML=mMake();
}
make.js
function mMake(){
var out;
var i, k;
out="<table id='mt' class='menuTitle'><tr>";
for(i=0; i<MENU_TITLE.length; i+=2){
mMakeFrame(MENU[i/2], i/2);
out+="<td id='mt"+i/2+"'><nobr><a onmouseover='mShow(this, \""+i/2+"\")' target='nav' href=\""+MENU_TITLE[i+1]+"\"> \;"+MENU_TITLE[i]+" \;</a></nobr></td>";
}
out+="</tr></table>";
return out;
}
function mMakeFrame(m, index){
var newDiv=document.createElement("DIV");
newDiv.className="menuFrame";
newDiv.id="menu"+index;
newDiv.innerHTML=mMakeFrameHTML(m);
document.body.appendChild(newDiv);
}
function mMakeFrameHTML(m){
var out='', i;
out += "<table>";
for(i=0; i<m.length; i+=2){
out += "<tr><td onmouseover='overOutBackground(this, \"#007722\", \"#005418\")'>";
out += "<nobr><a target='nav' href=\""+m[i+1]+"\"> \;"+m[i]+" \;</a></nobr>";
out += "</td></tr>";
}
out += "</table>";
return out;
}
work.js
function mShow(obj, index){
var i, mt_size=0, n;
var m=document.getElementById("menu"+index);
n=obj.parentNode.parentNode.id.replace(/mt/,"");
i=MENU_TITLE.length/2;
i--;
if(n==i){
mt_size=document.getElementById("menu"+i).offsetWidth;
}else{
for(i; i>=n; i--){
mt_size += document.getElementById("mt"+i).offsetWidth;
}
}
m.style.left=(document.body.clientWidth-mt_size)+"px";
m.style.visibility="visible";
obj.onmouseover=function(){
document.getElementById("menu"+index).style.visibility="visible";
}
obj.onmouseout=function(){
document.getElementById("menu"+index).style.visibility="hidden";
}
}
2) DZ>В смысле iframe не используется?
Он используеться потом для навигации. DZ>У тебя срабатывает onload и происходит замещение содержимого div'а на содержимое iframe'а.
Изначально src не установлен и документ не какой не загружаеться или это не играет роли? DZ>Твой alert это и демонстрирует. Данное поведение наблюдается не только на SP2.
Если будет так:
, то содержание показываеться, если убрать <script>...</script>, то нет.
3) DZ>Из соображений секьюрности.
Я имел ввиду страницу с ответом ошибки 404, в NS и Opera'е нормально, в IE только если у iframe задан src, а через target нет.
Здравствуйте, raw_loot, Вы писали:
_>Прикол в том, что если appendChild закомментировать ошибка исчезает(проблема только с IE).Выложу полный код(он маленький) _> <Поскипано>
Если уж выкладываешь примеры, то выкладывай хотя бы рабочие. И чтобы не надо было думать, есть ли тайный смысл в 3 js-файлах вместо того, чтобы ему быть одному и чего определение отсутствует. А так — никакого желания нет ковыряться и догадываться.
DZ>>В смысле iframe не используется? _>Он используеться потом для навигации. DZ>>У тебя срабатывает onload и происходит замещение содержимого div'а на содержимое iframe'а. _>Изначально src не установлен и документ не какой не загружаеться или это не играет роли?
А для кого я лазил в MSDN и выдирал цитату?
_>Если будет так:
, то содержание показываеться, если убрать <script>...</script>, то нет.
А тебя не смущает, что в момент вызова alert и до тех пока ты кликнешь ОК отрисовка документа останавливается? Как я мыслю, пока ты кликнешь ОК, в модели документа уже есть элемент с id'шником navigator, но еще как бы пустой. Полностью он сгенерится только когда отработает скрипт.
_>Я имел ввиду страницу с ответом ошибки 404, в NS и Opera'е нормально, в IE только если у iframe задан src, а через target нет.
Попробуй направить свою навигацию сначала на гугл, потом на яндекс и сообщи о результатах.
Здравствуйте, DrZubr, Вы писали:
DZ>А так — никакого желания нет ковыряться и догадываться.
Понимаю , но суть в том, что не работает только в IE.
DZ>Попробуй направить свою навигацию сначала на гугл, потом на яндекс и сообщи о результатах.
Про то, что нельзя забирать содержимое других сайтов знаю, уже пробовал. Проверил ещё раз, ситуация аналогичная "отказано в доступе". Но, меня интересует именно ответ об ошибки(проблема только с IE), раз нет возможности отлавливать oerror. Или есть другой способ?
на счет пункта 1:
================
я тоже столкнлуся с такой проблемой. Как я поянл это баг.
проблема появляется если appendChild находится в таблице.
У меня не было этого метода в таблице, но страница была в iframe, а iframe был в таблице.
Так что если до самого топ окна встретится таблица,то будет ошибка.
покопавшись немного я решил не использовать appendChild. Добавил просто div контейнер и потом getElementById("mydiv").innerHTML="anything"