Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Iframe+firefox+jquery(document).ready

9.1K
05 декабря 2010 года
motorw
134 / / 15.12.2009
Схема такая:
Главная страница, в которой есть iframe с src=другая страница.
В другой странице есть событие $(document).ready(function(){}....
, которое работает во всех браузерах, но не в firefox. К слову, в этой же странице есть картинка, hover которой изменяет ей opacity(через jquery animate) и он работает. Не работает только само событие onload на этой странице.
Если же просто открываю эту страницу отдельно(не в iframe) в ff, то событие грузится нормально, скрипты выполняются. Но если эта странице открыта в iframe - то нет.
Как можно решить проблему?
244
05 декабря 2010 года
UAS
2.0K / / 19.07.2006
У меня для айфреймов в Мозилле все прекрасно работает для ready.
Обновите браузер или смотрите в firebug
9.1K
05 декабря 2010 года
motorw
134 / / 15.12.2009
Цитата: UAS
У меня для айфреймов в Мозилле все прекрасно работает для ready.
Обновите браузер или смотрите в firebug



В файербаге ничего нету(в консоли).
В ошибках же пишется вообще какой-то бред типа свойства css не существуют.

9.1K
05 декабря 2010 года
motorw
134 / / 15.12.2009
Вру. Онлоад заработал. Но ни одна функция jquery в нем не работает. Чо за?
244
06 декабря 2010 года
UAS
2.0K / / 19.07.2006
Может код наконец покажете?
9.1K
06 декабря 2010 года
motorw
134 / / 15.12.2009
Код:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <title>Upload form</title>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.4.4.js">jQuery.noConflict();</script>
    <link type="text/css" href="jqlegacy/development-bundle/themes/base/ui.all.css" rel="stylesheet"/>
    <link type="text/css" href="style.css" rel="stylesheet"/>
    <script type="text/javascript" src="jqlegacy/development-bundle/ui/ui.core.js"></script>
    <script type="text/javascript" src="jqlegacy/development-bundle/ui/ui.draggable.js"></script>
    <script type="text/javascript" src="jqlegacy/development-bundle/ui/ui.resizable.js"></script>
    <script type="text/javascript" src="jqlegacy/development-bundle/ui/ui.tabs.js"></script>
    <script type="text/javascript" src="jqlegacy/development-bundle/ui/ui.dialog.js"></script>
    <script type="text/javascript" src="jqlegacy/development-bundle/ui/ui.tooltip.js"></script>
    <script type="text/javascript" src="jquery-tooltip/jquery.tooltip.js"></script>
    <script type="text/javascript" src="jquery-timers/jquery-timers.js"></script>
    <link type="text/css" href="jquery-tooltip/jquery.tooltip.css" rel="stylesheet"/>
    <script type="text/javascript" src="jqlegacy/development-bundle/ui/ui.core.js"></script>
    <script type="text/javascript" src="plugins/jquery.color.js"></script>
    <script type="text/javascript" src="plugins/jquery.form.js"></script>
    <script type="text/javascript">
    $(document).ready(function(){
            $("#warningfileupload").slideUp();
            $("#sendfilebutton").slideUp();
            //$("#sendfilebutton").animate({height: "0px", width: "0px", display: "none"}, 100);
            $(".waitupload").hide(1);
            $("#result").fadeOut(1);
            $("#fileuploadform").ajaxForm({
                target: "#result",
                success: function() {
                    $("#fileuploaddiv").hide(1);
                    $("#result").fadeIn(600);
                }});
        });
    </script>
    <?php include("functions.php"); ?>
</head>

<body>
    <div class=center id=fileuploaddiv>
        <form action='upload.php' id=fileuploadform method='post' enctype='multipart/form-data' &#111;&#110;Submit='$("#waitimg").animate({opacity: 1},800);$("#sendfilebutton").slideUp()'>
            <input type='hidden' name='MAX_FILE_SIZE' value='104857600' />
            <img src='images/upload4.png' style='position: absolute;z-index: 2;opacity: 0.6' alt="" id=uploadimg class=hovertable />
            <div id="waitimg" style='opacity: 0'>
                <img src='images/fileuploading.png' alt="" style='position: absolute; z-index: 5;' class=waitupload />
                <img src='images/wait.gif' alt="" class=waitupload style='position: absolute;margin-left: 90px;margin-top: 65px; z-index: 5;' />
            </div>

            <input type="file" id='fileupload' name='file' &#111;&#110;change='upload()' style="font-size: 170px;  left: 0; top:0;
            position: relative; top: 0;left:0;z-index: 73;opacity: 0;filter: alpha(opacity = 0);height: 200px;width: 250px;"
            &#111;&#110;mouseover='$("#uploadimg").animate({opacity: 1}, 650);warnaboutextension("onmouseover")'
            &#111;&#110;mouseout='$("#uploadimg").animate({opacity: 0.6}, 650);warnaboutextension("onmouseout")' />

            <input type=submit value="Send file" id="sendfilebutton" style="margin-left: 90px" />
            <p id=warningfileupload>Only <font color=#FF0000>.png .jpg .gif .txt</font> files are supported.<br/>Images must be <font color=red>320x240</font><br/>Text files must be <font color=red>lower 100KB</font></p>
        </form>
    </div>
        <div id=result></div>
</body>

</html>

А iframe находится в таблице в ячейке:
 
Код:
<td rowspan=10>
                      <iframe src=uplform.php frameborder=0 scrolling=no height=280px weight=300px id=fileuploadframe></iframe>
                    </td>

Во всех браузерах при загрузке айфрейма его ready работает, а в фф нет. Ошибок никаких js нет. Даже алерты ставил - работают. Да что толку проверять алертами - страница - рабочая. Отдельно запускаю - все работает прекрасно. А в айфрейме-ff - нет.
244
06 декабря 2010 года
UAS
2.0K / / 19.07.2006
Хмм, щас на ночь глядя не могу сообразить сразу, где может быть косяк.
Попробуйте закомментить все строки ready, а потом по очереди расскомментивать каждую строчку и смотреть - сработает ли функция.
Знаю, что метод, конечно, глупый, но я много чего уже навидался в веб-программировании, так что мало ли отказ обработки команд браузером в iframe вызван какой-то не понравившейся ему командой.
9.1K
06 декабря 2010 года
motorw
134 / / 15.12.2009
Пробовал уже :) Чего только не перепробовал. Реакции нету. Словно ошибка не в коде(она и не в коде:)).

это.. как бы объяснить. В общем, jquery animate работает(кстати, косячно), а slideUp и fade, например, не работают в фф в ифрейме. Хотя jquery их прогрузил(иначе бы в других браузерах не работало).


upd: Чудо! Когда в фф перезагружаю iframe - он работает нормально. Осталось выяснить, как бы сразу сделать так, чтобы он нормально грузился. Видать, это ляп ff. Только как его золвить? Помогите, друзья.
9.1K
07 декабря 2010 года
motorw
134 / / 15.12.2009
Кому интересно, вылечил я этот баг. Это самый настоящий баг ФФ. Проблема именно в нем. В общем, пораскинув мозгами, с утречка, пришел довольно к простому выводу - релоад ифрейма яваскриптом по наступлении какого-либо человеческого события(нажатие кнопки, фокус и т.д.):
 
Код:
<script>
&#111;&#110;click=document.getElementById(\"fileuploadframe\").src='uplform.php?'+Math.random();......>
</script>

К сожалению, все это дело тормозит в осле и фф, но зато работает.

И последний парадокс: самим собой разумеющимся, я пытался сделать работу этого скрипта только под ФФ, но! В этом случае ифрейм начинал грузиться правильно только в ФФ, а в других браузерах отказывался! Так что либо тормоза в двух браузерах, либо баги :( Очень печально.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог